ACM模板(9)鍊錶

2021-10-08 22:47:13 字數 1461 閱讀 2936

acm模板列表 

目錄

一,鍊錶

二,獲取鍊錶長度、鍊錶反轉、鍊錶中倒數第k個節點

三,鍊錶合併

把兩個鍊錶交叉合併為乙個鍊錶

把兩個公升序的鍊錶合併為乙個公升序的鍊錶

四,鍊錶和結構體指標陣列互轉、鍊錶排序

五,判斷鍊錶是否有環、求煉錶環的長度、求煉錶環的第乙個節點

struct listtnode 

};#define listnode listtnode

//獲取鍊錶長度

int getlength(listnode *p)

return ans;

}//鍊錶反轉,返回新的head

listnode * reverse(listnode *p)

return p;

}//鍊錶中倒數第k個節點

listnode* getkthfromend(listnode* head, int k)

//把兩個鍊錶交叉合併為乙個鍊錶

listnode* mergetwolists(listnode* p, listnode* q)

pnext=p->next, qnext=q->next;

p->next=q, q->next=pnext;

p=pnext, q=qnext;

}return ans;

}

//把兩個公升序的鍊錶合併為乙個公升序的鍊錶

listnode* mergetwouplists(listnode* p, listnode* q)

if(p)ans->next=p;

else ans->next=q;

return head;

}

//把鍊錶轉化成結構體指標陣列

vectorlisttovec(listnode*head)

return ans;

}//把結構體指標陣列轉化成鍊錶

listnode* vectolist(vectorv)

//鍊錶排序

bool cmp(listnode*&a,listnode*&b)

listnode* listsort(listnode*head)

//判斷鍊錶是否有環,有環返回環中任意節點,沒環返回null

listnode *getanyoneincycle(listnode *head)

return p1;

}//求煉錶環的長度,沒環返回0

int getcyclelen(listnode*head)

//求煉錶環的第乙個節點,沒環返回null

listnode *detectcycle(listnode *head)

模板 鍊錶模板 有序鍊錶模板及測試

鍊錶模板 c 程式設計 資料結構與程式設計方法 16.2作為抽象資料型別的鍊錶 header file linkedlist.h ifndef linkedlist h define linkedlist h template struct nodetype template class linke...

(9)鍊錶追趕

include using namespace std 認真分析具體情況,當把問題分析透了時,解決方案也就一目了然了 1.如果兩個都沒有環 看結尾節點是否相同 2.如果乙個有環,乙個沒有,則必定分離 3.如果兩個都有環 node1,node2 分別是入環節點 看是否能從node1遍歷到node2 如...

模板順序鍊錶

對於模板這個東西,我感覺好像概念清楚,但一直沒機會動手寫一寫。今天終於動手了,寫了才知道自己還是有很多相關的東西不知道的。今天寫了乙個模板順序鍊錶,還花了不少時間,以後有機會將會寫更多的模板資料結構。下面的資料結構支援記憶體自動增長。有查詢,插入,刪除,賦值等簡單基本操作 ifndef afx xt...