C語言 單鏈表實現(二) 就地逆置,就地歸併

2021-07-10 18:09:56 字數 908 閱讀 4072

#include#include#include#define len sizeof(struct nodelist)

using namespace std;

typedef struct nodelist

nodelist;

//函式宣告

void error(char *s); //錯誤處理函式

nodelist *creatnode(void); //後插法建立單鏈表

nodelist *reverselist(nodelist *head); //就地逆置函式

void merynode(nodelist &l1, nodelist &l2); //就地歸併函式

void printnode(nodelist l); //輸出函式

//函式定義

void error(char *s) //錯誤處理函式

nodelist *creatnode(void) //後插法建立單鏈表

p->next = null;

return head;

}void printnode(nodelist l) //將鍊錶依次資料輸出

cout << endl;

}nodelist *reverselist(nodelist *head) //就地逆置函式

return r;

}void merynode(nodelist &l1, nodelist &l2) //就地歸併函式

else

}if (pb!=null)

pc->next = pb;

}int main() //主函式測試

單鏈表就地逆置

思路為定義四個工作指標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...

單鏈表的就地逆置

單鏈表的就地逆置是指輔助空間o 1 的逆置方法,有兩種方法 普通迴圈 頭插法重新建立帶頭節點的新鍊錶 和遞迴。下面我們詳細介紹這兩種方法 方法一 頭插法 演算法思想 逆置鍊錶初始為空,表中節點從原煉表中依次 刪除 再逐個插入逆置鍊錶的表頭 即 頭插 到逆置鍊錶中 使它成為逆置鍊錶的 新 的第乙個結點...