用VC++实现单链表动态插入删除

来源:百度知道 编辑:UC知道 时间:2024/06/25 08:24:11
还有创建,要求有指针显示。插入删除时指针要动态移动演示插入删除位置。非常感谢!
注意:
合理设计窗口界面,首先创建一个线性表,线性表的元素通过友好界面输入,建立后的线性表在窗口界面上显示出来;通过对话框输入要插入和删除的元素及插入的位置,显示出插入和删除元素之后的线性表,线性表的显示尽量美观逼真。功能菜单或按钮自行设计,以合理为目的。元素插入和删除时,动态显示元素指针移动及插入删除的全过程

只能给你一个大概的算法,具体代码自己写吧,也就花点时间而已。

首先是定义一个宏MAX_LENGTH标示你的动态链表的最大节点数。

定义一个结构struct node,用于表示你的链表的结点的内部结构。

然后定义一个指针数组void ss[MAX_LENGTH],用于存储每个节点的位置。

初始化的时候应该使用malloc直接从内存中挖掘出void * f=malloc(sizeof(node)*MAX_LENGTH)的存储区域用于作动态链表的活动区域。并且定义一个变量count=0用于表示当前的链表节点数目。

至于动态的插入和删除,只要操作数组ss[]即可。插入一个节点时,只要ss[count]=f+sizeof(node)*count;count++;然后将ss[count-1]付值即可。删除节点如果是末尾的那只需要count--即可,数组ss当中被删除的节点编号处直接付给地址0。下次复制或插入时会被覆盖掉的。
但要记住程序退出时需要释放f内存块的。

相比以往的链表操作,整块内存分配会更连贯,让链表操作更便捷。

至于插入位置嘛用f+sizeof(node)*count;就可以找到了。

不过要注意我上面说的数组ss是一个地址数组而不是指针!比如void *m;
m=ss[1];
m->node_sub01=...;
m->node_sub02=...;
...

想要代码是吧?你给我200RMB我可以考虑下。
代码都懒得写还学什么编程