链表中删除值相同的多余结点的算法.docVIP

  • 3
  • 0
  • 约2.49千字
  • 约 6页
  • 2023-05-25 发布于山东
  • 举报

链表中删除值相同的多余结点的算法.doc

设计在单链表中删除值同样的剩余结点的算法 思路: 创立单链表 输出单链表 删除剩余 ——删除 循环拿出单链表的值 依表比较1删除——持续 实行过程: 定义数据域(int) 定义节点 创立单链表 输出单链表信息操作 删除算法 1 输入p-number 存入以head为 头结点的单链 表中 输入flag flag  开始 Flag 23 p=head-next q=head-nextp=head-nextr=head-next 0 p0 1 1 Key=p-number Printf(“%d” ,p-number) q-next 1 q-next- number==Key0 1 r=q-next q-next=q- next-next Free(r) 输入达成删除达成输出达成 #includestdio.h #includestdlib.h #includemalloc.h #includeconio.h //defineNode typedefstructNode { intnumber; structNode*next; }ListNode; typedefListNode*LinkList; LinkListhead; //CreateListNode LinkListcreatList(void) { //definenode head=(ListNode*)malloc(sizeof(ListNode)); ListNode*p; ListNode*rear; rear=head; charflag=y; //xunhuanshuru while(flag==y||flag==Y) { p=(ListNode*)malloc(sizeof(ListNode)); printf(输入数值:\n); scanf(%d,p-number); rear-next=p; rear=p; printf(持续输入吗?(y/n):\n); flag=getch(); } rear-next=NULL; returnhead; } //deleteduoyu voiddeleteList(LinkListhead) { ListNode*p;//waiceng p=head-next; ListNode*q; ListNode*r; q=p;//neiceng r=p; intkey;//huodemeicixunhuandezhi //xunhuan while(p) { key=p-number; //q=p-next; while(q-next) { if(q-next-number==key) { r=q-next; q-next=q-next-next; free(r); //zengjiashifangkongjiandefaima //break; } else { q=q-next; } } p=p-next; q=p; } return; } //printList voidprintList(LinkListhead) { ListNode*p; p=head-next; while(p!=NULL) { printf(输出的数值为:); printf(%d\n,p-number); p=p-next; } printf(  输出完成  \n); } //menu intmenu_select() { intsn; printf(\n删除剩余结点算法设计\n); printf(==================================\n); printf(1.线性表成立\n); printf(2.删除剩余\n); printf(3.查问信息\n); printf(0.退出管理系统\n); printf(==================================\n); printf(请选择0-5:\n); for(;;) { scanf(%d,sn); if(sn0||sn3) printf(\n\t输入错误,重选0-5\n); else break; } returnsn; } //Control voidmain() { while(1) { switch(menu_select()) { case1://setup printf(*******************************************\n); printf(学生信息线性表成立\n); printf(*******************************************\n); head=creatList(); break; case2://delete printf(*********

文档评论(0)

1亿VIP精品文档

相关文档