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