單鏈表操作實驗報告

2021-08-25 06:41:53 字數 1789 閱讀 2031

線性表一、實驗目的

1. 了解線性表的邏輯結構特徵,以及這種特性在計算機內的兩種儲存結構。

2. 掌握線性表的順序儲存結構的定義及其c語言實現。

3. 掌握線性表的鏈式村粗結構——單鏈表的定義及其c語言實現。

4. 掌握線性表在順序儲存結構即順序表中的各種基本操作。

5. 掌握線性表在鏈式儲存結構——單鏈表中的各種基本操作。

二、實驗要求

1. 認真閱讀和掌握本實驗的程式。

2. 上機執行本程式。

3. 儲存和列印出程式的執行結果,並結合程式進行分析。

4. 按照對順序表和單鏈表的操作需要,重新改寫主程式並執行,列印出檔案清單和執行結果

三、實驗內容

請編寫c程式,利用鏈式儲存方式來實現線性表的建立、插入、刪除和查詢等操作。具體地說,就是要根據鍵盤輸入的資料建立乙個單鏈表,並輸出該單鏈表;然後根據螢幕選單的選擇,可以進行資料的插入或刪除,並在插入或刪除資料後,再輸出單鏈表;然後在螢幕選單中選擇0,即可結束程式的執行。

4、解題思路

本實驗要求分別寫出在帶頭結點的單鏈表中第i(從1開始計數)個位置之後插入元素、建立帶頭結點的單鏈表中刪除第i個位置的元素、順序輸出單鏈表的內容等的演算法。

5、程式清單

#include

#include

#include

typedef int elemtype;

typedef struct lnode

lnode;

lnode *l;

lnode *creat_l();

void out_l(lnode *l);

void insert_l(lnode *l,int i,elemtype e);

elemtype delete_l(lnode *l,int i);

int locat_l(lnode *l,elemtype e);

void main()

printf("\n

}while(k>=1&&k<5);

printf("\n 按回車鍵,返回...\n");

ch=getchar();

}lnode *creat_l()

return(h);

}void out_l(lnode *l)

; }

void insert_l(lnode *l,int i,elemtype e)

if(p==null||i<1)printf("\n插入位置錯誤!");

else

}elemtype delete_l(lnode *l,int i)

if(!p->next||i<1)

else

}int locat_l(lnode *l,elemtype e)

if(p!=null) return(j); else return(-1);

}六、除錯心得及收穫

該程式所包含的內容有線性表的建立、元素插入、刪除元素和查詢元素,具體操作根據螢幕提示進行。最後以「0」的輸入來結束程式!

當要在單鏈表的第i個位置插入乙個元素時,必須先將單鏈表第i個元素之後的所有元素依次後移乙個位置,以便騰空乙個位置,再把新元素插入到該位置。當要刪除第i個元素時,也只需將地i個元素之後的所有元素前移乙個位置。

通過對該程式的除錯與執行,使得對線性表的功能及其構成有了進一步的了解!

七、其他所想到的

乙個完整的程式,是由許多模組所組成的,要使程式能正常執行,必須使每個模組讀能正常執行,且能相互連線。就像乙個建築,需要有許多結構組成,任何乙個結構都不能有差錯!!!

單鏈表實驗報告

計算機與資訊科技學院綜合性 設計性實驗報告 專業 網路工程年級 班級 大二 2016 2017學年第一學期 一 實驗目的 1 熟悉順序表的建立 取值 查詢 插入 刪除等演算法,模組化程式設計方法。二 實驗儀器或裝置 1 硬體裝置 cpu為pentium 4以上的計算機,記憶體2g以上 2 配置軟體 ...

實驗報告單

班級 六年級姓名 班級 六年級姓名 班級 六年級姓名 班級 六年級姓名 實驗報告單 班級 六年級姓名 班級 六年級姓名 班級 六年級姓名 班級 六年級姓名 實驗報告單 班級 六年級姓名 班級 六年級姓名 六年級科學下冊實驗題集合 一 觀察加熱白糖的變化 在加熱白糖的過程中,蠟燭也在不斷地燃燒,它也同...

實驗報告單

四年級1班級班 時間實驗者 實驗名稱比較兩種不一樣的電路連線 實驗器材 電池 電池盒 燈泡 燈座各2個 導線4根。1 把電池裝入電池盒裡,把燈泡裝在燈座上。2 用導線把電池 燈泡 逐個串接法連起來。使2個小燈泡同實驗步驟 時亮起來。3 用導線把電池 燈泡 用併聯法連線起來。使2個小燈泡同時亮起來。4...