有序單鏈表的合併

2021-06-10 02:00:24 字數 1325 閱讀 7492

1  非遞迴方式:

[cpp]view plain

copy

// 單鏈表.cpp : 定義控制台應用程式的入口點。

//單鏈表

#include "stdafx.h"

#include 

#include 

using

namespace

std;  

typedef

struct

node node;  

//單鏈表的正向排序

node *insertsort()  

p=new

node;  

p->data=a;  

p->next=null;  

q=head->next;  

if(q==null)  

if(q->data>a)  

else

}  if(q==null)  

p->next=q; //插入值插到q前面,cur後面

cur->next=p;  

}  }  

return

head;  

}  //兩個有序單鏈表進行合併

node *merge(node *head1,node *head2)  

if(head2==null || head2->next==null)  

node *head; //合併後的頭指標

head=new

node;   

head->next=null;  

node *p,*q;  

node *p1=head1->next;//p1指向head1的第乙個節點

node *p2=head2->next;//p2指向head2的第二個節點

q=head;//q指向合併後的單鏈表

while

(p1!=null && p2!=null)  

else

}  if(p1!=null) 

//如果p1指向的單鏈表沒有插入完,則把剩餘的插入到q的後面

}  if(p2!=null)

//如果p2指向的單鏈表沒有插入完,則把剩餘的插入到q的後面

}  return

head; 

//返回合併後單鏈表的頭指標

}  //列印單鏈表

void

print(node *head)  

while

(p!=null)

//遍歷鍊錶

}  int_tmain(

intargc, _tchar* argv)    

有序單鏈表的合併

接上兩篇,乙個是遞迴與非遞迴的區別,這裡能明顯的看出來,遞迴 簡潔,易懂,但層層呼叫會消耗棧空間。另乙個這是單鏈表的乙個小應用,具體例項的乙個東西 include stdafx.h include include stdlib.h using namespace std typedef struct...

C有序單鏈表的合併

include include include include list.h 建立和列印鍊錶的函式在標頭檔案中 將鍊錶 list1與 list2合併成 list3 引數 兩個要合併的鍊錶的頭結點位址 node combinelist node list1,node list2 else 反之基本同上...

合併兩個有序的單鏈表,合併後依然有序

分析過程 首先我要合併有序的鍊錶,合併後依然有序。我就要有兩個指標,分別指向兩個鍊錶,觀察所給的兩個鍊錶是公升序還是降序的來確定合併後的鍊錶是否有序。這裡預設的認為鍊錶時公升序的 用指標分別指向兩個鍊錶的第乙個節點,比較大小,那個大,將元素尾插進入我所要返回的新鍊錶中去。一次比較迴圈往復,直至某乙個...