問題:輸入兩個非遞減序列的序列,合併這兩個鍊錶並使新鍊錶中的結點仍然是按照非遞減排序的,要求使用原來的鍊錶空間。
例如:1,3,9
和 2,8
,結果為:
1,2,3,8,9、
分析:
分析完畢,看**:
#include#includetypedef int datatype;
typedef struct node
snode,*slist;
//單鏈表的建立
slist created()
s->data=temp;
s->next=null;
q=s;
while(1)
p=(slist)malloc(sizeof(snode));
p->data=temp;
p->next=q->next;
q->next=p;
q=p;
}return s;
}//講兩條公升序單鏈表合成一條
slist merge(slist s1,slist s2)
else //如果第二條鏈上的頭小於第一條鏈上的頭,則新的鍊錶的頭指向第二條
r=s; //合成的新鍊錶的頭為s
while(p!=null && q!=null)
else //如果第二條鏈上的小於或等於第一條鏈上的,則下乙個結點指向第二個結點上較小的結點
r=r->next;
}//如果第一條鏈上的還沒完,則將後續的加到新鍊錶結尾
if(p!=null)
//如果第二條鏈上的還沒完,則將後續的加到新鍊錶結尾
if(q!=null)
//返回新的鍊錶的結點
return s;
}//輸出單鏈表裡的內容
void printdata(slist s)
printf("\n");
}int main()
兩個公升序鍊錶合併成乙個公升序鍊錶
將兩個公升序鍊錶和並成乙個公升序序列 include includetypedef struct node linknode linknode creat linklist2 return h void printlink linknode h linknode mergelink linknode...
兩個公升序鍊錶合併為乙個公升序鍊錶
linklist mergeheaderlinklist linklist l,linklist p else while header2 next null if header1 next null printf 找到比 d大的值 d n header2 next data,header1 nex...
合併K個公升序鍊錶
給你乙個鍊錶陣列,每個鍊錶都已經按公升序排列。請你將所有鍊錶合併到乙個公升序鍊錶中,返回合併後的鍊錶。示例 1 輸入 lists 1,4,5 1,3,4 2,6 輸出 1,1,2,3,4,4,5,6 解釋 鍊錶陣列如下 1 4 5,1 3 4,2 6 將它們合併到乙個有序鍊錶中得到。1 1 2 3 ...