兩公升序鍊錶合併

2021-07-07 09:07:12 字數 1425 閱讀 7319

問題:輸入兩個非遞減序列的序列,合併這兩個鍊錶並使新鍊錶中的結點仍然是按照非遞減排序的,要求使用原來的鍊錶空間。

例如: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 ...