鍊錶有很多種類,單向,雙向,不帶頭,帶頭,不帶環,帶環,結合起來一共可以有八種鍊錶形式;
今天我們來實現一種名字叫 單向不帶頭不帶環的鍊錶
下面就是每一部分的**實現
首先我們要做的就是函式的宣告,結構體的定義,標頭檔案的引用
#pragma once
#define header printf("\n----------%s------------\n",__function__)
#include
#include
#include
typedef char linktype;
typedef struct linklist
linklist;
linklist *head;
void linklist_init(linklist **head);
linklist *creat(linktype value);
void linklist_print(linklist *head);
void linklist_pushback(linklist **head,linktype value);
void linklist_popback(linklist **head);
void linklist_pushfront(linklist **head,linktype value);
void linklist_popfront(linklist **head);
linklist *linklist_find(linklist *head,linktype value);
void linklist_pushhighleft(linklist **head,linklist *pos,linktype value);
void linklist_pushhighright(linklist **head,linklist *pos,linktype value);
void linklist_pop1(linklist **head,linklist *pos);
void linklist_pop2(linklist **head,linktype value);
void linklist_pop2plus(linklist **head,linktype value);
void linklist_nizhi(linklist *head);
接下來我們就要一步一步實現我們的功能
首先我們要初始化我們的鍊錶;
鍊錶的初始化
void linklist_init(linklist **head)
else
}
鍊錶列印**的實現
void linklist_print(linklist *head)
else
printf("\n");
}}
下來我們還要實現我們的建立函式的**
linklist *creat(linktype value)
else
}
好,我們準備工作都做好了,現在我們就要實現它的一些功能了
void linklist_pushback(linklist **head,linktype value)
if(*head==null)
else
cur=creat(value);
}}
void linklist_popback(linklist **head)
if(*head==
null)
else
free(cur->next);
cur->next=
null;
}}
void linklist_pushfront(linklist **head,linktype value)
if(*head==null)
else
}
void linklist_popfront(linklist **head)
if(*head==
null)
eles
}
linklist * linklist_find(linklist *head,linktype value)
else
else
}printf("沒找到\n");
return ;
}}
void linklist_pushhighleft(linklist **head,linklist *pos,linktype value)
if(*head==null)
else
linklist *newnode=creat(value);
newnode->next=pos;
cur->next=newnode;
}}
void linklist_pushhighright(linklist **head,linklist *pos,linktype value)
if(*head==null)
else
}
void linklist_pop1(linklist **head,linklist *pos)
if(*head==null)
if(*head==pos)
else
cur->next=pos->next;
free(pos);
pos=null;
}}
void linklist_pop2(linklist **head,linktype value)
if(*head==null)
else
}
void linklist_pop2plus(linklist **head,linktype value)
if(*head==
null)
else
linklist *p=cur;
cur=p->next;
linklist_pop1(head,p);}}
}
void linklist_nizhi(linklist *head)
else
}
以上就是鍊錶的一些功能的實現,相互學習,如果有錯誤,請指正 不帶頭結點的雙向迴圈鍊錶
基本概念 迴圈鍊錶 將單鏈表中最後乙個結點的next指向頭結點或者空指標,就使得整個單鏈表形成乙個環,這種頭尾相接的單鏈表稱為單迴圈鍊錶,簡稱迴圈鍊錶。雙向鍊錶 是在單鏈表的每個結點中,再設定乙個指向其前驅結點的指標域prior,在雙向鍊錶的結點中有兩個指標域,乙個next指向直接後繼,乙個prio...
不帶頭結點的單迴圈鍊錶
建立標頭檔案nlist.h pragma once 不帶頭節點的鍊錶,主要應用在迴圈鍊錶中,其缺點,操作複雜 會出現二級指標 優點 靈活 頭指標指向哪個節點哪個節點就是第乙個節點 不帶頭節點的單鏈迴圈鍊錶,尾節點的next指向第乙個節點 typedef struct nnode nnode,pnli...
不帶頭節點鍊錶
在本人之前的博文 帶頭節點的鍊錶 宿舍管理系統 中,本人介紹了鍊錶的基本知識點。那麼,在本人資料結構與演算法的專欄的開始,本人就來介紹下不帶頭節點鍊錶 由於本人在講解帶頭節點鍊錶的時候就已經講解過了鍊錶基本的增 刪 改 查 操作,所以,本人在這裡就不對這些重複的知識點進行講解了。本人在本篇博文中主要...