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

2022-07-23 06:42:12 字數 1788 閱讀 7359

6-1 帶頭結點的單鏈表就地逆置(10 分)

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

void listreverse_l(linklist &l);
其中l是乙個帶頭結點的單鏈表。

//庫函式標頭檔案包含

#include

#include

#include

//函式狀態碼定義

#define true 1

#define false 0

#define ok 1

#define error 0

#define infeasible -1

#define overflow -2

typedef int status;

typedef int elemtype; //假設線性表中的元素均為整型

typedef struct lnode

lnode,*linklist;

status listcreate_l(linklist &l,int n)

return ok;

}

void listreverse_l(linklist &l);

void listprint_l(linklist &l)

}

int main()

listreverse_l(l);

listprint_l(l);

return 0;

}/* 請在這裡填寫答案 */

輸入格式:

第一行輸入乙個整數n,表示單鏈表中元素個數,接下來一行共n個整數,中間用空格隔開。

輸出格式:

輸出逆置後順序表的各個元素,兩個元素之間用空格隔開,最後乙個元素後面沒有空格。

4

1 2 3 4

4 3 2 1
void listreverse_l(linklist &l)  

lnode *p=l->next,*q;  

l->next=null;  

while(p!=null)  

q=p->next;  

p->next=l->next;  

l->next=p;  

p=q;  

/*思路:①將原來的頭結點拆下來,作為新的逆置鍊錶的頭結點 

②將原來鍊錶的各個節點,依次拆卸下來,然後按照頭插法,插入到逆置鍊錶當中 

③迴圈,直到原來的鍊錶為空即可。*/

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

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

單鏈表就地逆置

思路為定義四個工作指標p back p q back q,然後先將p q從鍊錶中摘下,在分別在p back後和q back後插入。最後在重新定位工作指標。注意點 若先全部摘下,否則在中點相遇時p和q back會重疊,使得鍊錶斷開,所以當長度為偶數時到達中點的兩個節點時要跳出迴圈,另外直接交換兩者 迴...

單鏈表就地逆置

就地逆置鍊錶 分析 我們採用頭插法或者相鄰節點直接修改指向的方法來進行逆置。如下 struct link define crt secure no warnings include include void reverse link h h next pre 頭指標指向最後乙個節點 q next n...