線性表的鏈式儲存結構是指用一組任意的儲存單元儲存線性表中的資料元素。為了反映資料元素之間的邏輯關係,對於每個資料元素不僅要表示它的具體內容,還要附加乙個表示它的直接後繼元素儲存位置的資訊這樣構成的鍊錶為單鏈表。其結點分為資料域與指標域 ,單鏈表分為帶頭結點和不帶頭結點兩種型別。
資料域指標域
data
next
單鏈表由乙個個結點構成,如下**:
typedef
int datatype;
typedef
struct linknodelinklist;
上面定義的linklist是結點型別,如果想定義乙個指向該結點型別的指標head,如下:
linklist *head
(1)單鏈表的初始化,**如下:
linklist *
initlist()
(2)建立單鏈表(頭插法),**如下:
void
createlisth
(linklist *head,
int n)
printf
("建立鍊錶head操作成功!");
}
(3)建立單鏈表(尾插法),**如下:
void
createlistl
(linklist *head ,
int n)
printf
("建立鍊錶head操作成功!");
}
(4)求單鏈表表長,**如下:
int
lengthlist
(linklist *head)
printf
("鍊錶head長度為%d"
,j);
}
(5)按值查詢資料元素,**如下:
void
locate
(linklist *head,datatype x)
if(p!=
null
)else
}
(6)按序號查詢資料元素,**如下:
void
searchlist
(linklist *head,
int i)
while
(p->next!=
null
&&jif(j==i)
}
(7)插入資料元素操作,**如下:
void
inslist
(linklist *head,
int i,datatype x)
if(p!=
null
)else
}
(8)刪除資料元素操作,**如下:
void
dellist
(linklist *head,
int i)
if(p->next!=
null
&&j==i-1)
else
}
(9)輸出鍊錶資料元素操作,**如下:
void
displist
(linklist *head)
}
(10)判斷鍊錶是否為空,**如下:
void
listempty
(linklist *head)
else
}
(11)求鍊錶長度,**如下:
int
lengthlist
(linklist *head)
printf
("鍊錶head長度為%d"
,j);
}
(12)重置鍊錶操作,**如下:
void
clearlist
(linklist *head)
head->next=
null;if
(p==
null
&&head->next==
null
)else
}
(13)銷毀鍊錶操作,**如下:
void
destorylist
(linklist *head)
if(p==
null
)else
}
實驗:單鏈表子系統
(1)掌握線性表的特點及其儲存的方式。
(2)掌握線性表鏈式儲存的基本運算。
(3)掌握線性表的建立、插入、刪除和顯示線性表中元素等的基本操作。
#include
#include
#include
typedef
int datatype;
typedef
struct linknodelinklist;
linklist *
initlist()
/*void createlisth(linklist *head,int n)
printf("建立鍊錶head操作成功!");
}*/void
createlistl
(linklist *head ,
int n)
printf
("建立鍊錶head操作成功!");
}int
lengthlist
(linklist *head)
printf
("鍊錶head長度為%d"
,j);
}void
locate
(linklist *head,datatype x)
if(p!=
null
)else
}void
searchlist
(linklist *head,
int i)
while
(p->next!=
null
&&jif(j==i)
}void
inslist
(linklist *head,
int i,datatype x)
if(p!=
null
)else
}void
dellist
(linklist *head,
int i)
if(p->next!=
null
&&j==i-1)
else
}void
displist
(linklist *head)
}void
listempty
(linklist *head)
else
}void
clearlist
(linklist *head)
head->next=
null;if
(p==
null
&&head->next==
null
)else
}void
destorylist
(linklist *head)
if(p==
null
)else
}void
menu()
intmain()
if(ch2!=
'0')}}
}
資料結構(C語言)線性表 單鏈表
鏈式儲存 不要求邏輯上相鄰的元素在物理位置上也相鄰,摒棄順序儲存結構上的缺點,但也失去了順序表隨機訪問的優點。單鏈表 只含有乙個指標域,頭指標沒有資料域,尾指標的指標域為空。線性表的單鏈表儲存結構 include include define ok 1 define error 0 typedef ...
資料結構(C語言版) 線性表
1 線性結構的特點 1 存在唯一乙個被稱作 第乙個 的資料元素。2 存在唯一乙個被稱作 最後乙個 的資料元素。3 除第乙個元素之外,每個資料元素均只有乙個前驅。4 除最後乙個元素之外,每個資料元素均只有乙個後繼。2 線性表 n個資料元素的有限序列,是一種邏輯結構。1 同一線性表中的元素具有相同的性質...
資料結構 線性表 單鏈表
本文只要實現單鏈表的初始化 插入 尾插 頭插 任意位置插入 刪除 尾刪 頭刪 刪除指定元素 查詢等。定義單鏈表 typedef int datatype typedef struct linknode linknode,plinknode,plist 實現單鏈表的所有介面 void initlink...