3 兩個有序單鏈表合併為乙個有序的單鏈表

2021-06-05 06:05:09 字數 1171 閱讀 4183

單鏈表的基本操作   包括 :鍊錶的建立(頭插法,尾插法),鍊錶的遍歷,兩個單調遞增的鍊錶合併為乙個單調遞增的鍊錶,兩個單調遞增的鍊錶合併為乙個單調遞減的鍊錶

#include #include using namespace std;

//定義單鏈表的接點

typedef struct nodenodes;

//將兩個單調遞增鍊錶合併成乙個 單調遞增鍊錶

void merge(node * a,node * b,node * &c)

else

} if(p!=null) r->next=p;//將a的剩餘接點 新增到c的後面

if(q!=null) r->next=q;//將b的剩餘接點 新增到c的後面

} //將兩個單調遞增的單鏈表合併成乙個 單調遞減的單鏈表

void mergedown(node * a,node * b,node * &c)

else

} while(p!=null)

while(q!=null)

} //建立鍊錶 尾插法

void createlist(node * &node ,int data,int length)

p->next=null;

} //建立鍊錶 頭插法

void createlisthead(node * &node ,int data,int length)

} //遍歷單鏈表

void showlist(node * node)

} int main(int argc, char *argv)

for(i=1;i<=10;i++)

int length=10;

createlist(node ,data,length);

createlisthead(node2 ,data2,length);

showlist(node);

printf("\n");

showlist(node2);

printf("\n");

mergedown(node,node2,node3);

showlist(node3);

system("pause");

return exit_success;

}

單鏈表 兩個有序鍊錶合併為乙個有序

1 new乙個新的鍊錶,定義結點用來遍歷兩個待排序的鍊錶 2 兩個待排序的鍊錶,哪個頭結點小,哪個作為新鍊錶的頭結點 3 對兩個鍊錶的結點進行比較,讓新鍊錶的next指向較小的結點,更新新鍊錶的尾巴,繼續比較直至某個鍊錶遍歷結束。4 遍歷結束,如果哪個鍊錶沒遍歷完,將剩下的幾點串在新鍊錶的後面,即當...

合併兩個有序單鏈表

include using namespace std typedef struct nodenode,linklist void creatlist linklist l void insert int n,node p void show linklist l cout num head2 ne...

合併兩個有序單鏈表

思路 第一種 遞迴法 這個方法不好想,遞過去的時候做的事情是找到新的單鏈表的下乙個節點,歸的時候做的是告訴每個節點的next是什麼繫結關係,帶入資料就能知道怎麼回事 public listnode merge listnode a,listnode b if b null listnode newh...