單鏈表的基本操作 包括 :鍊錶的建立(頭插法,尾插法),鍊錶的遍歷,兩個單調遞增的鍊錶合併為乙個單調遞增的鍊錶,兩個單調遞增的鍊錶合併為乙個單調遞減的鍊錶
#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...