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

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

發布時間: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。

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

閱讀全文

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

熱點內容
怎麼下郵政銀行app 瀏覽:244
不背單詞app單詞怎麼學習 瀏覽:479
程序員日常操作搞笑 瀏覽:379
android檢查是否安裝 瀏覽:373
蘋果手機編輯pdf文件 瀏覽:458
android系統名字 瀏覽:969
安卓手機如何進去有求必應屋 瀏覽:432
指數除法運演算法則底數不同 瀏覽:894
90壓縮干糧09壓縮干糧 瀏覽:516
android線程池框架 瀏覽:481
手機自帶解壓能解壓哪些文件 瀏覽:804
linux安裝hba驅動 瀏覽:119
java構造函數new 瀏覽:668
怎麼查家裡電器耗電量app 瀏覽:506
原神一直顯示重新連接伺服器怎麼辦 瀏覽:826
一般用途軸流式壓縮機 瀏覽:926
沒學歷的怎麼學編程 瀏覽:901
華為的隱藏相冊無法加密 瀏覽:782
聯通套餐app怎麼設置 瀏覽:752
關於刪除鏈表的演算法描述 瀏覽:894