資料結構 鍊錶(C語言版)

2021-09-25 02:21:09 字數 2922 閱讀 2128

程式**:

#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...