赞
踩
个人代码如下所示,欢迎大佬指正。
- #include<stdio.h>
- #include<stdlib.h>
-
- typedef struct LNode
- {
- int data;
- struct LNode* next;
- }Node,*Link;
-
- //删除值为x的结点
- void Delete(Link& link, int x)
- {
- Node* p = link,*q;
- while (p->next!=NULL)
- {
- if (p->next->data == x)
- {
- q = p->next;//保存待删除的结点p
- p->next = q->next;//将结点p从链表中拿出去
- free(q);
- }
- else
- p = p->next;//否则直接检查下一个结点
- }
- }
- //遍历并输出每一个结点
- void PrintLink(Link link)
- {
- Node* p = link;
- while (p->next!=NULL)
- {
- printf("%d ", p->next->data);
- p = p->next;
- }
- }
-
- int main()
- {
- Link link = (Link)malloc(sizeof(Node));
- link->next = NULL;
-
- Node* p = link,*s;
- int x;
- scanf("%d", &x);
- while (x < 9999)//输入数字大于9999便停止
- {
- s = (Node*)malloc(sizeof(Node));
- s->data = x;
- p->next = s;
- p = s;
- scanf("%d", &x);
- }
- p->next = NULL;//修改最后一个结点的next指针
-
- Delete(link, 5);
- PrintLink(link);
- return 0;
- }

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。