導航:首頁 > 源碼編譯 > 在帶頭結點的單鏈表中編寫演算法

在帶頭結點的單鏈表中編寫演算法

發布時間:2023-01-24 10:12:41

A. 有一個帶頭結點的單鏈表L,設計一個演算法使其元素遞增有序排列

/*插入排序法*/
voidsort(Linklist*&L)
{
LinkList*p=L->next,*q,*r;
if(p!=NULL)
{
/*把鏈表分成兩條,一條已經排序好了(L),一條待排序(p)*/
r=p->next;
p->next=NULL;
p=r;
/*對於所有待排序的元素*/
while(p!=NULL)
{
/*把p鏈表的第一個元素插入到L,並且將它從p中移除*/
r=p->next;//r指向p的第二個元素
/*找到合適的插入點*/
q=L;
while(q->next!=NULL&&q->next->data<p->data)
q=q->next;
/*在q後面插入p*/
p->next=q->next;
q->next=p;
/*現在p的第一個元素已經被移到L中合適的位置了*/
p=r;
}
}
}

B. 寫出在帶頭結點的動態單鏈表結構上求線性表的長度的演算法: int LengthList( Node *L ) 謝謝!!

int LengthList( Node *L )

{
Node *p = L->next; //將p初始指向鏈表中第一個節點的地址

int length = 0;

while(p) //當p指向的地址不為空時,繼續循環計算長度

{

++length;

p = p->next; //鏈表長度加1後,將p指向其後繼節點地址

}

return length;

}

C. 已知有兩個帶頭的結點的循環單鏈表LA、LB,編寫一個演算法,將兩個循環單鏈表合並為一個循環單鏈表

已知帶有頭結點的兩個單鏈表 la 和 lb 都是非遞增有序序列。


編寫好的演算法實現將這兩個鏈表合並為新的帶有頭結點的鏈表 lc ,使得 lc 的元素仍然是非遞增有序排列的序列,如果遇到 la 與 lb 中元素相同,則只取 la 中的元素,去掉 lb 中的元素。已知 la 的元素個數 為 m , lb 的元素個數為 n。

循環單鏈表是單鏈表的另一種形式,其結構特點鏈表中最後一個結點的指針域不再是結束標記,而是指向整個鏈表的第一個結點,從而使鏈表形成一個環。和單鏈表相同,循環鏈表也有帶頭結點結構和不帶頭結點結構兩種,帶頭結點的循環單鏈表實現插入和刪除操作較為方便。

閱讀全文

與在帶頭結點的單鏈表中編寫演算法相關的資料

熱點內容
如何發展mc伺服器 瀏覽:160
安卓手機拍照是反的如何正過來 瀏覽:619
伺服器怎麼外接機械硬碟 瀏覽:84
如何輸入代理伺服器和埠 瀏覽:674
排序演算法的實現的總結 瀏覽:16
重慶活塞並聯壓縮機哪裡買 瀏覽:516
中信銀行信用卡app叫什麼名字圖片 瀏覽:15
php指定ip訪問 瀏覽:45
n1盒子編譯openwrt 瀏覽:957
android不混淆庫 瀏覽:622
酷程序員頭像 瀏覽:808
短視頻平台伺服器怎麼選 瀏覽:74
怎麼分辨瑞年和平年的C語言編譯 瀏覽:217
黑馬程序員vue教程第32講 瀏覽:761
為什麼伺服器拷貝速度百兆 瀏覽:651
月薪過萬的程序員多久能在北上廣 瀏覽:982
媽媽看中程序員相親 瀏覽:381
伺服器配置不了ip地址怎麼辦 瀏覽:878
小米商城app有什麼 瀏覽:303
鋼筋加密區根數調整 瀏覽:385