文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>单链表的建立和删除源码

单链表的建立和删除源码

时间:2010-09-14  来源:月夜谧径

单链表的建立和删除结点
 1 #include <stdio.h>
2 #include <stdlib.h>
3
4 typedef struct node
5 {
6 int data;
7 struct node *next;
8 }SLink;
9
10 SLink *Create_node(int data) // 创建结点
11 {
12 SLink *p;
13 p = (SLink*)malloc(sizeof(SLink));
14 p->data = data;
15 p->next = NULL;
16 return p;
17 }
18
19 SLink *Create_SLink(SLink *head, int n) // 创建单链表
20 {
21 SLink *p, *tmp;
22 for(int i = 1; i<=n; i++)
23 {
24 p = Create_node(i); //p指向新加入的结点
25 if(head == NULL)
26 {
27 tmp = p;
28 head = p;
29 tmp->next = NULL;
30 }
31 else
32 {
33 p->next = tmp->next; //tmp指向新加入的前一个结点
34 tmp->next = p;
35 tmp = p;
36 }
37 }
38 //查看生成的链表开始
39 p = head;
40 while(p->next != NULL)
41 {
42 printf("元素:%4d\n",p->data);
43 p =p->next;
44 }
45 printf("元素:%4d\n",p->data);
46 //查看生成的链表结束
47 return head;
48 }
49
50 SLink *del(SLink *head, int data)
51 {
52 SLink *p1, *p2;
53 p1 = head;
54 while(data != p1->data && p1 != NULL)
55 {
56 p2 = p1;
57 p1 = p1->next;
58 }
59 if(data == p1->data)
60 {
61 if(p1 == head)
62 {
63 head = p1->next;
64 free(p1);
65 }
66 else
67 {
68 p2->next =p1->next;
69 free(p1);
70 }
71 }
72 else
73 printf("找不到要删除的结点!\n");
74 return head;
75 }
76
77 int main()
78 {
79 SLink *head = NULL;
80 SLink *p;
81 p = Create_SLink(head, 9);
82 SLink *q;
83 q = del(p, 9);
84 printf("删除后:\n");
85 p = q;
86 while(p->next != NULL)
87 {
88 printf("元素:%4d\n",p->data);
89 p =p->next;
90 }
91 printf("元素:%4d\n",p->data);
92 }
93
94

 

相关阅读 更多 +
排行榜 更多 +
宝宝情商养成宝宝巴士

宝宝情商养成宝宝巴士

休闲益智 下载
燥热手机版

燥热手机版

飞行射击 下载
巨人狙击手安卓版

巨人狙击手安卓版

飞行射击 下载