我必须编写一个程序,该程序可以从2d数组中插入/删除字符串,并且能够尽快执行撤消/重做指令。我当时在考虑为每个插入/删除指令创建一个2d数组,因此撤消基本上将旧的2d数组复制回当前数组。
例如,我当前的2d数组是:
“ 1:你好
2:世界”
然后我要求删除#2行,
所以现在我当前的2d数组是:“ 1:你好”
我想创建一个新的2d数组,其中包含:
“ 1:你好
2:世界”
这样一来,如果我要求撤消操作,它会将“ 1:Hello 2:World”复制回当前的二维数组中。
struct node{char** Instruction2dArray;
struct node* next;}
struct node* pointer;
i=0;
pointer->Instruction2dArray=malloc(max*sizeof(char*)) //max contains the number of written lines
while(CurrentArray[i][0]!='\0'){
pointer->Instruction2dArray[i]=malloc((strlen(CurrentArray[i])+1)*sizeof(char));
strcpy(pointer->Instruction2dArray[i],CurrentArray[i]);
i++;
}
我写了这个简单的代码来复制当前数组,但是我很确定这是最慢的方法,而且我不知道如何更快地做。 谢谢您的帮助。
答案 0 :(得分:0)
因为,您已经说过想要更多的插入/删除操作,所以链接列表更为可取。如果且仅当您需要更多随机访问时,则更喜欢2D字符串数组。
我认为,链接列表针对插入/删除操作进行了更优化。