//反轉鍊錶
node* reverse_list(node* head)
node* p1 =head;
node* p2 =head->next;
node* p =null;
head->next = null;
while(p2)
return p1; }
//在鍊錶指定位置插入節點
node* insert_list(node* head, int n, node* newnode)
node* p =head;
--n;
while(n--&& p)
if(p ==null)
node* temp =p->next;
p->next =newnode;
newnode->next = temp;
return head; }
//鍊錶合併
node * merge(node *head1 , node *head2)
else
node *pcurrent = head;
while(p1!=null &&p2!=null)
else }
if(p1 != null)
pcurrent->next = p1;
if(p2 != null)
pcurrent->next = p2;
return head; }
//遞迴合併有序鍊錶
node * mergerecursive(node *head1 , node *head2)
else
return head; }
//判斷鍊錶是否有環
struct node
bool check(const node* head) {} //return false:無環;true:有環
//一種o(n)的辦法就是(搞兩個指標,乙個每次遞增一步,乙個每次遞增兩步,如果有環的話兩者必然重合,反之亦然):
bool check(const node* head)
return false; }
鍊錶類模板
include using namespace std class cnode 定義乙個節點類 template 定義類模板 class clist 定義clist類 type movetrail 獲取尾節點 return ptmp 返回尾節點 void addnode type pnode 新增節...
C 鍊錶操作總結和常見鍊錶操作
一 鍊錶的定義 鍊錶是一種動態資料結構,他的特點是用一組任意的儲存單元 可以是連續的,也可以是不連續的 存放資料元素。鍊錶中每乙個元素成為 結點 每乙個結點都是由資料域和指標域組成的,每個結點中的指標域指向下乙個結點。head是 頭指標 表示鍊錶的開始,用來指向第乙個結點,而最後乙個指標的指標域為n...
LinkList鍊錶操作
以下的c 類linklist實現了線性鍊錶的一般操作。可以直接在其他的程式中直接建立它的物件,其中線性表中的資料在此為整型,具體應用的時候可以適當的修改,並可以在此基礎上繼續封裝特定的功能。標頭檔案 linklist.h typedef struct lnode lnode,plinklist cl...