粗暴,干就完了----徐晓冬似的C语言自学笔记-----实现一个链表结构
生活随笔
收集整理的這篇文章主要介紹了
粗暴,干就完了----徐晓冬似的C语言自学笔记-----实现一个链表结构
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1 #include <stdio.h>
2 #include <stdlib.h>
3 #define N 5
4 /*N 假定數組長度為5*/
5 typedef struct snode
6 {
7 int data;
8 struct snode *next;
9 } SNODE;
10
11 /*第一步,添加鏈表頭信息*/
12 SNODE *createhead(int a[])
13 {
14 SNODE *h,*p,*q;
15 /*q為上一節點,p為當前節點*/
16 int i;
17 q=(SNODE *)malloc(sizeof(SNODE));
18 h=q;
19 for(i=0;i<N;i++)
20 {
21 p=(SNODE *)malloc(sizeof(SNODE));
22 p->data = a[i];
23 q->next=p;
24 q=p;
25 }
26 q->next=0;
27 return h;
28 }
29
30 /*第二步打印鏈表中的元素*/
31 void showstars(SNODE *h)
32 {
33 SNODE *p;
34 p=h->next;
35 while(p)
36 {
37 printf("%d 其地址為 %x\n",p->data,p);
38 p=p->next;
39 }
40 }
41
42
43 /*第三步刪除/回收節點*/
44 void revokeresource(SNODE *h)
45 {
46 SNODE *p,*q;
47 p=h->next;
48 while(p)
49 {
50 q=p->next;
51 printf("哦,no~~~%d被回收了\n",p->data);
52 free(p);
53 p=q;
54 }
55 free(h);
56 }
57
58 /*添加一個節點,目標在值為4的結點前添加一個結點,如果值為4的節點不存在,則在末尾添加一個結點*/
59 void insert(SNODE *h,int a,int d)
60 {
61 SNODE *p,*q;
62 SNODE *s;
63 s=(SNODE *)malloc(sizeof(SNODE));
64 s->data=d;
65 q=h;p=h->next;
66 while(p)
67 {
68 if(p->data==a) break;
69 q=p;p=p->next;
70 }
71 s->next=q->next;
72 q->next=s;
73 showstars(h);
74 }
75
76 /*刪除值為targetdta的鏈接節點*/
77 void collectnode(int targetdata,SNODE *h)
78 {
79 SNODE *p,*q;
80 p=h->next;
81 q=h;
82 while (p)
83 {
84 if(p->data==targetdata)
85 {
86 break;
87 }
88 q=p;p=p->next;
89 }
90 if(p)
91 {
92 q->next=p->next;
93 free(p);
94 }
95 }
96
97 void main()
98 {
99 int saiwa[N]={1,2,3,4,5};
100 SNODE *head;
101 head=createhead(saiwa);
102 showstars(head);
103 printf("================*在數組的值4前插入節點值8=================\n");
104 insert(head,4,8);
105
106 printf("================*回收節點4=================\n");
107 collectnode(4,head);
108 showstars(head);
109 }
?
?輸出結果:
?
轉載于:https://www.cnblogs.com/saintdingspage/p/11231302.html
總結
以上是生活随笔為你收集整理的粗暴,干就完了----徐晓冬似的C语言自学笔记-----实现一个链表结构的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于常用STM32F103芯片型号代码
- 下一篇: Cannot access repo1