資料結構實驗3 單鏈表的基本操作實現

2021-10-10 09:38:45 字數 3062 閱讀 9462

寫的如果有不太好的地方,歡迎大佬指點!

實驗3、單鍊錶的基本操作實現

(1)實驗目的

通過該實驗,深入理解鍊錶的邏輯結構、物理結構等概念,掌握鍊錶基本操作的程式設計實現,熟練掌握c語言中指標的操作。和實驗3對比,掌握線性結構兩種不同儲存方式的區別。

(2)實驗內容

程式設計實現鍊錶下教材第二章定義的線性表的基本操作,最好用選單形式對應各個操作,使其程式設計乙個完整的小軟體。注意,每個功能模組一定要考慮非法的情況,並作出相應的提示,例如:求前驅,要分別能夠測試第乙個元素的前驅、其他正常的元素的前驅、輸入乙個在表中不存在的元素求其前驅,這三種情況應給出相應的提示語和結果值;插入和刪除時要考慮插入或刪除的位置是否合法等。

(3)實驗要求:

選單項包括:

1.初始化或重置鍊錶

2.銷毀鍊錶

3.清空鍊錶

4.鍊錶長度

5.指定位置的元素值

6.鍊錶已存在元素的位序

7.求輸入元素的直接前驅

8.求輸入元素的直接後繼

9.在第i個位置插入乙個元素

10.刪除第i個元素

11.輸出有的鍊錶元素

12.初始化並用頭插法(或尾插法)輸入元素

13.實現單鏈表的逆序存放

要求:

所有的提示語和輸出語句不允許出現在自定義的函式中,只能在main函式**現提示語。

注:銷毀鍊錶時需要迴圈釋放每個結點所占用的空間。

注:求前驅是指,輸入乙個元素值(而不是位置),求該元素在順序表中的直接前驅元素值。求後繼是指:輸入乙個元素值(而不是位置),求該元素在順序表中的直接後繼元素。

#include#include#includeusing namespace std;

typedef int elemtype;

typedef struct lnode lnode, *linklist;

linklist head;//定義頭指標。

int exist;//定義全域性變數,判定鍊錶的存在與否。

linklist chushihua();//1.宣告初始化或重置鍊錶的函式。

void xiao_hui(linklist l);//2.宣告銷毀鍊錶的函式。

int qing_kong(linklist l);//3.宣告清空鍊錶的函式。

int qiu_length(linklist l);//4.宣告求鍊錶長度的函式。

int qiu_yuansu(linklist l,int a);//5.宣告求指定位置的元素值的函式。

int qiu_weizhi(linklist l,int a);//6.宣告求煉表已存在元素的位序的函式。

int qian_qu(linklist l,int a);//7.宣告求輸入元素的直接前驅的函式。

int hou_ji(linklist l,int a);//8.宣告求輸入元素的直接後繼的函式。

void cha_ru(linklist l,int weizhi,int a);//9.宣告在第i個位置插入乙個元素的函式。

int shan_chu(linklist l,int weizhi,int a);//10.宣告刪除第i個元素的函式。

void shu_chu(linklist l);//11.輸出有的鍊錶元素的函式。

linklist wei_cha(linklist &l,int n);//12.宣告初始化並用頭插法(或尾插法)輸入元素的函式。

void ni_xu(linklist &l);//13.宣告實現單鏈表的逆序存放的函式。

int main()

//2.銷毀鍊錶.

void xiao_hui(linklist l)

free(l);

}//3.宣告清空鍊錶的函式。

int qing_kong(linklist l)

}//4.鍊錶長度.

int qiu_length(linklist l)

return jishu;

}//5.宣告求指定位置的元素值的函式。

int qiu_yuansu(linklist l,int a)

return p->data;

} //6.宣告求煉表已存在元素的位序的函式。

int qiu_weizhi(linklist l,int a)

p=p->next;

} return ++jishu; }

//7.宣告求輸入元素的直接前驅的函式。

int qian_qu(linklist l,int a)

p=p->next;

q=q->next;

} return -999;

}//8.宣告求輸入元素的直接後繼的函式。

int hou_ji(linklist l,int a)

p=p->next;

q=q->next;

} return -999;

}//9.宣告在第i個位置插入乙個元素的函式。

void cha_ru(linklist l,int weizhi,int a)

if(b==weizhi-1) }

//10.宣告刪除第i個元素的函式。

int shan_chu(linklist l,int weizhi,int a)

if(b==weizhi-1) }

//11.輸出鍊錶元素的函式。

void shu_chu(linklist l)

}//12.宣告初始化並用頭插法(或尾插法)輸入元素的函式。

linklist wei_cha(linklist &l,int n)//尾插法。

p->next=null;

return l;

}//13.宣告實現單鏈表的逆序存放的函式。

void ni_xu(linklist &l)

}

資料結構 實驗一 單鏈表的基本操作

include using namespace std typedef struct lnodelinknode void fun1 linknode l 建立單鏈表 void fun2 linknode l,char a,int n 使用尾插法插入元素 void fun3 linknode l 輸...

資料結構實驗二 單鏈表的基本操作

程式設計實現單鏈表的基本操作 建立單鏈表,查詢單鏈表,插入單鏈表,刪除單鏈表 採用單鏈表結構程式設計實現 兩個有序單鏈表的歸併運算。掌握線性表的鏈式儲存結構 掌握單鏈表及其基本操作的實現。本實驗專案可以支撐 目標1.理解資料結構的基本概念 計算機內部資料物件的表示和特性。掌握線性表 樹 圖等資料邏輯...

資料結構 單鏈表基本操作

實現單鏈表的初始化,頭插法建表,尾插法建表,查詢元素,插入元素,刪除元素等功能 include using namespace std define elemtype char typedef struct node node,linklist 初始化單鏈表 void initlist linkli...