程式**:
#include
#include
#include
#define error 0
#define ok 1
#define true 1
#define false 0
#define overflow -2
typedef int elemtype; /定義鍊錶元素的型別/
typedef int status; /定義函式的型別,其值是函式結果狀態**/
typedef struct lnodelnode,*linklist;
void createlist1_l(linklist &l, int n); /* 帶頭結點的單鏈表的建立(前插法) /
void createlist2_l(linklist &l, int n); / 帶頭結點的單鏈表的建立(尾插法) /
void clearlist_l(linklist &l);//清空線性表l
void destroylist_l(linklist &l); / 銷毀單鏈表 */
void printlist_l(linklist l); /輸出帶頭結點單鏈表的所有元素/
status insertlist_l(linklist &l,int i,elemtype e);在帶頭結點的單鏈表l中第i個位置前插入元素e
status deletelist_l(linklist &l, int i, elemtype &e);//刪除第i個元素,並由e返回其值
void createlist1_l(linklist &l, int n)/* 帶頭結點的單鏈表的建立(前插法) */
}/createlist1_l/
void createlist2_l(linklist &l, int n)/* 單鏈表的建立(尾插法) */
}/createlist2_l/
void clearlist_l(linklist &l)//清空線性表l
}/clearlist_l/
void destroylist_l(linklist &l) /* 銷毀單鏈表 */
l=null;
}/destroylist_l/
void printlist_l(linklist l)//輸出帶頭結點單鏈表的所有元素
printf(「鍊錶已輸出完畢…」);
}/printlist_l/
status insertlist_l(linklist &l,int i,elemtype e)//在帶頭結點的單鏈表l中第i個位置前插入元素e
if(!p||j>i-1)return error;
q=(lnode *)malloc(sizeof(lnode));
q->data=e;
q->next=p->next;
p->next=q;
return ok;
}/insertlist_l/
status deletelist_l(linklist &l, int i, elemtype &e)//刪除第i個元素,並由e返回其值
if(!(p->next) || j>i-1) return error;
q=p->next;
p->next=q->next; //不能弄反,否則date和next無效---------------------------------
e=q->data;
free(q);
return ok;
}/deletelist_l/
status getelem_l(linklist l,int i,elemtype &e)//獲取第i個元素值
if§e=p->data;
return ok;
}/getelem/
int listlength_l(linklist l)//獲取表長
return j;
}status listempty_l(linklist l)//判斷線性表l是否為空
int main()
else printf(「插入位置不合理\n」);
printf("\n6-刪除單鏈表l中第i個位置的元素:\n");
printf(「input i=」);
scanf("%d",&i);
if(deletelist_l(l,i,e))
else printf(「刪除位置不合理\n」);
printf("\n清空單鏈表…\n");
clearlist_l(l); //清空單鏈表l
printf(「煉表表長:%d\n」,listlength_l(l));
if(listempty_l(l)) printf(「鍊錶l為空\n」);
else printf(「鍊錶l不空\n」);
printf("\n");
printf("\n銷毀單鏈表…\n");
destroylist_l(l);
printf("\n");
printf("\n");
printf("\n尾插法建立帶頭結點的單鏈表…\n");
printf("\n1-建立鍊錶:\n");
createlist2_l(l,n);
printf("\n2-輸出鍊錶:\n");
printlist_l(l);
}else printf(「error」);
printf("\n");
return 0;
}執行結果:
王道資料結構鍊錶C語言版
include stdio.h include stdlib.h include stdbool.h typedef struct lnode lnode,linkedlist 初始化乙個單鏈表 帶頭結點 linkedlist initlist linkedlist l l next null 頭結...
資料結構鍊錶C語言版 單向鍊錶詳解
最近在準備計算機考研,正在複習資料結構的知識點,剛開始學習鍊錶的時候實在是有些痛苦,在痛苦了幾個小時後,終於有所收穫,在此記錄一下 相鄰元素之間通過指標連線。最後乙個元素的後繼指標為null。鍊錶的空間能夠按需分配。沒有記憶體空間的浪費。typedef struct node node 定義乙個st...
資料結構 有序鍊錶合併(C語言版)
有序鍊錶合併 兩個有序的鍊錶,要求將其合併為乙個鍊錶,並且該鍊錶保持有序!這裡所講的是鍊錶公升序!首先,我們要構造兩張按照公升序排列好的鍊錶。構造鍊錶 我們的方法有尾插,頭插,大家可以click鏈結來檢視 這裡我們的實驗資料,以及思路如圖所示!實驗資料 鍊錶1 1,3,5,7 鍊錶2 1,2,4 5...