鍊錶是一種物理儲存結構上非連續、非順序的資料儲存結構,資料元素的邏輯順序是通過鍊錶中的指標鏈結次序來形成的。
單鏈表分為兩種:帶頭節點和不帶頭結點。在這裡,主要介紹不帶頭結點的單鏈表的基本操作。
標頭檔案:slist.h
typedef
int sdatatype;
typedef
struct slistnode//定義結點
node;
typedef
struct slist//鍊錶
slist;
void
slistinit
(slist* pl)
;//初始化鍊錶
node*
buyslistnode
(sdatatype data)
;//開闢乙個結點
void
slistpushback
(slist* pl, sdatatype data)
;//尾插
void
slistpopback
(slist* pl)
;//尾刪
void
slistpushfront
(slist* pl, sdatatype data)
;//頭插
void
slistpopfront
(slist* pl)
;//頭刪
//在鍊錶中查詢值為data的結點,找到返回該結點的位址,否則返回空
node*
slistfind
(slist* pl, sdatatype data)
;//在鍊錶結點pos位置後置入值為data的結點
void
slistinsertafter
(node* pos, sdatatype data)
;//刪除鍊錶中位置在pos的結點
void
slisterase
(slist* pl, node* pos)
;int
slistsize
(slist* pl)
;//獲取鍊錶中有效結點的個數
intslistempty
(slist* pl)
;//檢測鍊錶是否為空
node*
slistfront
(slist* pl)
;//獲取鍊錶第乙個結點
node*
slistback
(slist* pl)
;//獲取鍊錶的第二個結點
void
printslist
(slist* pl)
;//列印鍊錶
void
destoryslist
(slist* pl)
;//銷毀
原始檔:slist.c
#include
"slist.h"
#include
#include
#include
void
slistinit
(slist* pl)
//初始化
node*
buyslistnode
(sdatatype data)
//開闢乙個結點
pnode->data = data;
pnode->pnext =
null
;return pnode;
}void
slistpushback
(slist* pl, sdatatype data)
//尾插
pcur->pnext = pnewnode;}}
void
slistpopback
(slist* pl)
//尾刪
elseif(
null
== pl->phead->pnext)
//只有乙個結點
方法一:找到倒數第二個結點
else
//有兩個以上的結點
free
(ptailnode->pnext)
; ptailnode->pnext =
null;}
方法二:找到倒數第乙個結點,並儲存前乙個結點
else
free
(ptailnode)
; pprenode->pnext =
null;}
}void
slistpushfront
(slist* pl, sdatatype data)
void
slistpopfront
(slist* pl)
else
}// 在鍊錶中查詢值為data的節點,找到返回該節點的位址,否則返回空
node*
slistfind
(slist* pl, sdatatype data)
else
}return
null;}
void
slistinsertafter
(node* pos, sdatatype data)
void
slisterase
(slist* pl, node* pos)
//pos不在第乙個位置
pdelnode = pl->phead;
while
(pdelnode->pnext != pos)
pdelnode->pnext = pos->pnext;
free
(pos);}
void
printslist
(slist* pl)
//列印鍊錶
printf
("null\n");
}void
destoryslist
(slist* pl)
//銷毀鍊錶
pl->phead =
null;}
intslistsize
(slist* pl)
return count;
}int
slistempty
(slist* pl)
node*
slistfront
(slist* pl)
node*
slistback
(slist* pl)
return pcur;
}
測試檔案:test.c
#include
"slist.h"
#include
void
testslist1()
intmain()
資料結構樹的基本操作 資料結構 樹的基本操作
include include include gtree.h include linklist.h typedefstruct tag gtreenode gtreenode 樹的節點 struct tag gtreenode gtreedata data 節點自身資料 gtreenode par...
MySQL基本操作 資料操作
刪除資料 更新字段 1.插入指定字段值 insert into 表名 字段列表 values 對應字段值列表 2.向表中所有字段插入資料 insert into 表名 values 按表結構寫對應資料 insert into my teacher values liwei 20 1.查詢表中全部資料...
順序棧的基本操作 資料結構 一 棧結構
數 結 structure data 據 構 棧 結 構 s t a c k 前言 在計算機中儲存資料需要用到各種資料結構,一起來了解下棧結構吧。棧結構介紹 棧結構的宗旨就是先進後出 filo,first in last out 即先進入棧中的元素會在最後才能彈出。棧結構用圖形來表達的話就是這樣 棧...