單鏈表 雙鏈表 迴圈鍊錶總結

2021-06-03 04:47:32 字數 2630 閱讀 4954

1.單鏈表(為公升序鍊錶,value按公升序排列)

#include #include typedef struct node

node;//最好放在標頭檔案中

node *sll_creat();

int sll_length(node *p);

node *sll_del(node *head,int value);

void sll_print(node *head);

node *sll_insert(node *head,int n);

node *sll_reverse(node *head);

int main()

node *sll_creat()

new->value=data;

p->link=new;

p=new;

} temp=head;

head=head->link;//將第乙個無用節點head去除,如何free掉?

p->link=null;

free(temp);//刪除沒用的head,防止記憶體洩露

return head;

}int sll_length(node *p)

count++;//由於尾節點的存在

return count;

}void sll_print(node *head)

printf("%d\n",p->value);}/*

*1.此函式缺點是只能刪除第乙個value出現的節點

*2.此函式驗證了在結構體中的value跟區域性變數value不衝突

*/node *sll_del(node *head,int value)//缺點,只能刪除第乙個value所在的節點

if(value==p1->value)

else

}else

else

printf("can't find the value:%d",value);

} return head; }

/**此函式是在節點中的數字遞增的前提下才起作用(即該鍊錶要為有序鍊錶,value按公升序排列)**/

node *sll_insert(node *head,int n)

if(p->value>n)

else

}else

return head;

}node *sll_reverse(node *head)

else if(p1->link==null)

else }

p2->link=p1;

head->link=null;

head=p2;

return head;

}

2.雙鏈表:(value公升序)

#include #include typedef struct node

node;//不要忘了分號

node *dll_creat();

void dll_print(node *head);

int dll_length(node *head);

node *dll_del(node *head,int value);

node *dll_insert(node *head,int n);

int main()

node *dll_creat()

p=head;

while(scanf("%d",&value)==1)

new->value=value;

p->next=new;

new->prev=p;

p=new;

} temp=head;

head=head->next;

head->prev=null;

p->next=null;

free(temp);

return head;

}int dll_length(node *head)

length++;

return length;

}void dll_print(node *head)

printf("%d\n",p->value);

}node *dll_del(node *head,int value)

if(p->next==null)//尾節點

else

printf("can't find %d\n",value);

} if(p->value==value)

else//中間節點

}return head;

}node *dll_insert(node *head,int n)

new=(node*)malloc(sizeof(node));

if(new==null)

new->value=n;

if(p->next==null)//尾節點

else if(p==head)//頭節點

else//中間節點

return head;

}

迴圈鍊錶 迴圈雙鏈表 迴圈單鏈表

迴圈單 雙鏈表,建立 初始化 尾插 頭插 遍歷 插入 刪除 判空 部分函式採用過載 此處為c include include include using namespace std typedef struct lnodelnode,linklist typedef struct dnodednod...

雙鏈表 迴圈鍊錶

一 雙鏈表 對於雙鏈表,採用類似於單鏈表的型別定義,其dlinklist型別的定義如下 typedef struct dnode 宣告雙鏈表節點型別 dlinklist 1.建立雙聯表 1 頭插法 void createlistf dlinklist l,elemtype a,int n 頭插法建立...

鍊錶的實現 單鏈表 雙鏈表

鍊錶知識的引入 對於之前我們接觸到的陣列知識,要想儲存多個物件,首先想到的一定是物件陣列。但是陣列是乙個長度固定的線性結構,一旦內容不足或者過多,都會在成記憶體資源的浪費,由此引入鍊錶充分解決資源浪費問題。class node private屬性需要設定getter setter方法 public ...