slist.h
1#ifndef __slist_h__
2#define __slist_h__
34 #include5 #include
6 #include7 typedef int
elemtype;
8 typedef struct node node,*pnode;
12 typedef struct list list;
1718
void initlist(list *list);//
初始化單鏈表
19void push_back(list *list, elemtype x);//
在單鏈表的末尾插入元素
20void push_front(list *list, elemtype x);//
在單鏈表的頭部插入元素
21void show_list(list *list);//
列印單鏈表
22void pop_back(list *list);//
刪除單鏈表的最後乙個元素
23void pop_front(list *list);//
刪除單鏈表的第乙個元素
24void insert_val(list *list, elemtype val);//
將資料元素插入到單鏈表中(要求此時單鏈表中的資料元素順序排列)
25 node* find(list *list, elemtype x);//
查詢單鏈表中資料值為x的結點
26int length(list *list);//
求單鏈表的長度
27void delete_val(list *list, elemtype x);//
按值刪除單鏈表中的某個資料元素
28void sort(list *list);//
對單鏈表進行排序
29void reverse(list *list);//
逆置單鏈表
30void clear(list *list);//
清除單鏈表
31void destroy(list *list);//
摧毀單鏈表
3233
#endif
//__slist_h__
slist.cpp
1 #include"slist.h"2
3void initlist(list *list) 910
void push_back(list *list, elemtype x)
2223
void push_front(list *list, elemtype x)
3839
void show_list(list *list)
47 printf("
nul.\n");
4849}50
51void pop_back(list *list)
6566
void pop_front(list *list)
8081
void insert_val(list *list, elemtype x)
100101 node* find(list *list, elemtype x)
109110
int length(list *list)
113114
void delete_val(list *list, elemtype x)
123//
step 3:判斷結點位置是否是表尾
124if (p == list->last)//
是表尾125
pop_back(list);
126else
133}
134135
void sort(list *list)
156}
157158
void reverse(list *list)
173}
174175
void clear(list *list)
185//
step 3:頭指標和尾指標重新都指向頭結點
186 list->last = list->first;
187//
step 4:更新鍊錶長度
188 list->size = 0
;189
}190
191void destroy(list *list)
main.cpp
1 #include"slist.h"2
3void
main()
29break;30
case2:
31 printf("
請輸入要插入的資料(-1結束):>");
32while (scanf("
%d", &item), item != -1
) 35
break;36
case3:
37 show_list(&mylist);
38break;39
case4:
40 pop_back(&mylist);
41break;42
case5:
43 pop_front(&mylist);
44break;45
case6:
46 printf("
請輸入要插入的資料:>");
47 scanf("
%d", &item);
48 insert_val(&mylist, item);
49break;50
case7:
51 printf("
請輸入要查詢的資料:>");
52 scanf("
%d", &item);
53 p = find(&mylist, item);
54if (p ==null)
55 printf("
要查詢的資料在單鏈表中不存在!\n");
56break;57
case8:
58 printf("
單鏈表的長度為%d\n
", length(&mylist));
59break;60
case9:
61 printf("
請輸入要刪除的值:>");
62 scanf("
%d", &item);
63 delete_val(&mylist, item);
64break;65
case10:
66 sort(&mylist);
67break;68
case11:
69 reverse(&mylist);
70break;71
case12:
72 clear(&mylist);
73break;74
//case 13:
75//
destroy(&mylist);
76//
break;
77default
:78 printf("
選擇錯誤,請重新選擇!\n");
79break;80
}81}82 destroy(&mylist); //
程式結束,摧毀鍊錶
83 }
C語言版本 雙鏈表的實現
dlist.h 1 ifndef dlist h 2 define dlist h 34 include5 include 6 include7 typedef int elemtype 8 typedef struct node node,pnode 13 typedef struct list ...
單鏈表實現 C語言
單鏈表分為帶頭結點和不帶頭結點。頭結點是和普通結點一樣,有資料域,指標域。資料域存放鍊錶結點的個數,指標域存放指向鍊錶的指標。不帶頭結點是指煉表有乙個單純的指標,指向鍊錶,不儲存資料。pragma once ifndef linklist h 防止標頭檔案重複引用 define linklist h...
C語言單鏈表實現
今天分享一下單鏈表 有空頭 的一些操作!主要呢就是增 刪 列印!單鏈表可以比喻成一趟火車,有空頭的單鏈表就像是乙個火車頭拉著一節有一節的車廂。乙個車廂中有資料域和指標域,指標域用來連線,每節車廂肯定要有東西連著,不然就沒有方向了。如圖 所以連線的時候只要將指標域指向下乙個節點就是連線上了,然後刪除呢...