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

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

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

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

閱讀全文

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

熱點內容
伺服器板塊有什麼龍頭 瀏覽:74
我的世界伺服器成員怎麼開創造 瀏覽:660
程序員鄭州買房哪個區好 瀏覽:203
程序員發怒 瀏覽:823
安卓機看視頻怎麼沒有小窗口 瀏覽:456
minecraft伺服器怎麼布置 瀏覽:306
怎麼把安卓的東西轉到已激活蘋果 瀏覽:852
停止服務doss命令 瀏覽:877
u盤占內存但該文件夾為空 瀏覽:612
伺服器怎麼更換重生點 瀏覽:34
收費api調用平台源碼 瀏覽:647
安卓怎麼自檢病毒 瀏覽:560
布卡雲伺服器 瀏覽:770
程序員是怎麼做系統的 瀏覽:745
燕窩溯源碼最大加工廠 瀏覽:938
黑馬程序員第28集 瀏覽:486
lcd單片機驅動 瀏覽:648
通達信主力拉升出貨指標公式源碼 瀏覽:640
廉潔pdf 瀏覽:18
批量用修改多個文件夾及子目錄 瀏覽:323