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...