《資料結構》實驗一報告(單鏈表的就地反轉)

2021-10-02 02:54:16 字數 1350 閱讀 8063

一、目的和要求(需求分析)

1、掌握資料的鏈式儲存結構以及鍊錶的建立和操作。

2、利用鍊錶的原空間進行鍊錶的反轉;

(設計乙個將輸入資料建立成煉表、並依次輸出鍊錶資料、利用原空間把鍊錶反轉的程式。)

二、程式設計的基本思想,原理和演算法描述:

1.新建單鏈表

2.依次輸出單鏈表的結點值

3.就地反轉

4.列印反轉後的鍊錶l

5.摧毀單鏈表

逆置操作使p,q兩個指標配合工作,使得兩個結點間指向反向,頭節點指向空,利用p和q連個結點,依次迴圈。

三、除錯和執行程式過程中產生的問題及採取的措施

1.建立新煉表時未判斷指標分配空間是否成功

2.一開始寫帶表頭單鏈表前有一空白鏈,執行過程中,最後乙個鍊錶後面沒有後續結點,導致最後乙個結點沒有逆置

3.未給順序表分配空間大小

四、源程式及注釋:

#include //建立順序表,輸入各個元素,逆置鍊錶。

#include

#include

#define elemtype char

//單鏈表的鏈式儲存結構

typedef struct nodenode,*linklist;

void initlist(linklist *l);

void reverselist(linklist l);

void creatlist(linklist l);

void print(linklist l);

int main()

void initlist(linklist *l)

//建立新鍊錶

void creatlist(linklist l)else

flag = 0;}}

//輸出鍊錶l

void print(linklist l)

printf("\n\n");

}/非遞迴實現方式/

void reverselist(linklist l)

}五、執行輸出結果:

六、心得與體會:

我發現要想學號資料結構這門課一定要多寫程式,多練,即便書上的問題搞懂了,一旦自己動手寫程式就會出現各種問題,還有程式設計的習慣一直不是很好,**寫的不夠規範,修改起來也會造成一定的困擾,在日後學習還是要多加練習,培養好的程式設計習慣。

資料結構 單鏈表的就地逆置

剛完成了嚴蔚敏的資料結構 單鏈表的就地逆置習題 2.21 解題時想到2種方案,特此總結一下 方案1 1遍歷單鏈表,並算出單鏈表的長度n。2定位到節點ai,與節點an i 1 i 1 to n 2 1 也就是單鏈表的一半長度 交換各自的資料 i 方案2 1定位尾節點 2依次將節點插入到尾節點之後 3將...

資料結構 單鏈表的就地逆置

6 1 帶頭結點的單鏈表就地逆置 10 分 本題要求編寫函式實現帶頭結點的單鏈線性表的就地逆置操作函式。l是乙個帶頭結點的單鏈表,函式listreverse l linklist l 要求在不新開闢節點的前提下將單鏈表中的元素進行逆置,如原單鏈表元素依次為1,2,3,4,則逆置後為4,3,2,1。v...

單鏈表 資料結構實驗

資料結構實驗 單鏈表 實現順序表的各種基本運算 並在此基礎上設計乙個主程式,完成如下功能 1 初始化順序表l 元素型別為char型 2 依次採用尾插法插入a,b,c,d,e元素 3 輸出順序表l 4 輸出順序表l的長度 5 判斷順序表l是否為空 6 輸出順序表l的第3個元素 7 輸出元素 a 的位置...