一、目的和要求(需求分析):
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 的位置...