动态链表!!!
发布日期:2021-06-29 11:55:19 浏览次数:3 分类:技术文章

本文共 1525 字,大约阅读时间需要 5 分钟。

#动态链表

#include
#include
struct node{ int data; struct node * next;};typedef struct node Node;void add (Node **head , int data)//增加结点{ Node *p = *head; Node * newnode = (Node *)malloc(sizeof(Node)); newnode ->data = data; newnode ->next = NULL; if (*head == NULL) { *head = newnode; } else{ while (p->next != NULL) p = p->next; p->next = newnode; }}void printlist (Node *head)//打印链表{ Node *p; for (p = head ; p != NULL ; p = p ->next) printf("%d ",p->data);}int countlist (Node *head){ Node *p; int sum = 0; for (p = head ; p != NULL ; p = p->next) sum ++; return sum;}void fun (Node **head)//清空链表{ Node *p = *head; Node *fre = *head; while (p != NULL) { fre = p; p = p->next; free(fre); } *head = NULL;}void deletelist (Node **head , int x)//删除数据域为x的结点{ Node *p = *head; Node *t = *head; while (p -> next != NULL) { if (p -> next -> data == x) { t = p->next; p ->next = t ->next; free(t); } else p = p ->next; } p = *head; if (p ->data == x) { *head = p ->next; free(p); }}int main(){ Node *head = NULL;//生存空链表 for (int i = 0 ; i < 9 ; i ++) { add (&head , i); } printf("%d\n",countlist(head)); printlist(head); //puts(""); //fun(&head); //printf("%d\n",countlist(head)); deletelist(&head , 2); puts(""); printlist(head); return 0;}

转载地址:https://blog.csdn.net/zzp2231420982/article/details/117379108 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:单链表的基本操作
下一篇:2017HBCPC

发表评论

最新留言

逛到本站,mark一下
[***.202.152.39]2024年05月01日 19时35分26秒