数据结构 C语言实现循环单链表的实例
实例代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
|
//=========杨鑫========================// //循环单链表的实现 #include <stdio.h> #include <stdlib.h> typedef int ElemType; //定义结点类型 typedef struct Node { ElemType data; struct Node *next; }Node,*LinkedList; int count = 0; //1、单循环链表的初始化 LinkedList init_circular_linkedlist() { Node *L; L = (Node *) malloc ( sizeof (Node)); if (L == NULL) printf ( "申请内存空间失败\n" ); L->next = L; } //2、循环单链表的建立 LinkedList creat_circular_linkedlist() { Node *L; L = (Node *) malloc ( sizeof (Node)); L->next = L; Node *r; r = L; ElemType x; while ( scanf ( "%d" ,&x)) { if (x == 0) break ; count++; Node *p; p = (Node *) malloc ( sizeof (Node)); p->data = x; r->next = p; r = p; } r->next = L; return L; } //4、循环单链表的插入,在循环链表的第i个位置插入x的元素 LinkedList insert_circuler_linkedlist(LinkedList L, int i,ElemType x) { Node *pre; pre = L; int tempi = 0; for (tempi = 1; tempi < i; tempi++) pre = pre->next; Node *p; p = (Node *) malloc ( sizeof (Node)); p->data = x; p->next = pre->next; pre->next = p; return L; } //5、循环单链表的删除,在循环链表中删除值为x的元素 LinkedList delete_circular_linkedlist(LinkedList L,ElemType x) { Node *p,*pre; p = L->next; while (p->data != x) { pre = p; p = p->next; } pre->next = p->next; free (p); return L; } int main() { int i; LinkedList list, start; printf ( "请输入循环单链表的数据, 以0结束!\n" ); list = creat_circular_linkedlist(); printf ( "循环单链表的元素有:\n" ); for (start = list->next; start != NULL; start = start->next) { if (count== 0) { break ; } printf ( "%d " , start->data); count--; } printf ( "\n" ); return 0; } |
如图:
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
原文链接:http://blog.csdn.net/u012965373/article/details/45746803