我必须编写一个程序来插入/删除二维数组中的字符串,并且能够尽可能快地执行撤消/重做指令。我在考虑为每个插入/删除指令创建一个二维数组,所以撤消基本上是将旧的二维数组复制回当前的二维数组。
例如,我当前的2d数组是:
"1:你好
2:世界“
然后我要求删除第2行,所以现在我当前的2d数组是:"1: Hello“
我想创建一个新的二维数组,它包含:
"1:你好
2:世界“
因此,如果我请求撤销,它会将"1: Hello 2:World“复制回当前的2d数组中。
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++;
}我写了这个简单的代码来复制当前数组,但我非常确定这是最慢的方法,我不知道如何更快地完成它。谢谢你的帮助。
发布于 2020-08-27 14:07:39
因为你说过你想要更多的插入/删除操作,所以链表更可取。如果且仅当您需要更多随机访问时,最好使用2D字符串数组。
在我看来,链表对于插入/删除操作更优化。
https://stackoverflow.com/questions/63600821
复制相似问题