寫的如果有不太好的地方,歡迎大佬指點!
實驗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...