1.鍊錶的概念
■鏈式儲存結構中,邏輯上相鄰的元素在物理儲存上不一定相鄰。
結點包括:結點本身資料資訊,元素之間的關聯關係。
■線性表用鏈式方式將結點鏈結起來的儲存結構稱為鍊錶。
■從鏈結方式看,可分為單鏈表、迴圈鍊錶和雙向鍊錶。
■從實現角度看,可分為動態鍊錶和靜態鍊錶。
2.線性表的鏈式儲存
■線性鍊錶(單鏈表) :用一組任意的儲存單元存放線性表的結點每個結點的唯一後繼依靠乙個結點指標維持。
■鍊錶中的結點包括資料域和指標域兩個域
●資料域data :儲存結點的值,
●指標域next :儲存後繼結點的位置(位址)
■頭指標head指向第一乙個結點,最後乙個結點的指標域為"空」(null)
#include
#include
#include
#define ok 1
#define error 0
#define elemtype int
#define maxsize 100
#define error1 -1
using namespace std;
typedef
struct lnode
lnode,
*linklist;
void
initlist_l
(linklist & l)
;//建空表,並且初始化
void
createlist1
(linklist & l,
int n)
;//頭插法
void
createlist2
(linklist & l,
int n)
;//尾插法
intgetelem
(linklist l,
int i, elemtype &e)
;//根據位置i獲取資料元素的內容,取值
intlocateelem
(linklist l,
int e)
;//根據指定資料獲取所在的位置,查詢
intlistinsert_sq
(linklist &l,
int i, elemtype e)
;//插入
intlistdelete_sq
(linklist &l,
int i, elemtype &e)
;//刪除
intshowlist
(linklist l)
;//輸出
intmain()
void
initlist_l
(linklist & l)
void
createlist1
(linklist & l,
int n)
}void
createlist2
(linklist & l,
int n)
}int
getelem
(linklist l,
int i, elemtype &e)if(
!p || j > i)
return error;
else
}int
locateelem
(linklist l,
int e)
intlistinsert_sq
(linklist &l,
int i, elemtype e)if(
!p || j > i -1)
return error;
else
}int
listdelete_sq
(linklist &l,
int i, elemtype &e)if(
!p->next&&j > i -1)
return error;
else
}int
showlist
(linklist l)
return0;
}
鍊錶的優缺點
優點:-資料元素的個數可以自由擴充
-插入、刪除等操作不必移動資料,只需修改鏈結指標,修改效率較高
缺點:-儲存密度小.
-訪問效率不高,必須採用順藤摸瓜似的順序訪問
資料結構之單鏈表
date 08 07 06 descript 單鏈表的實現與應用 public class linlist public node gethead 定位函式 public void index int i throws exception if i 1 current head.next int j...
資料結構之單鏈表
鍊錶 儲存結構的一種,包含兩個部分,資料域和指標域,相對於順序儲存結構來說,插入和刪除的演算法時間複雜度只為o 1 定義 定義 typedef struct node linklist linklist,指標指向每乙個元素 typedef struct nodenode 以下為簡單的c語言實現 in...
資料結構之單鏈表
由於順序表再插入或者刪除時需要移動大量資料,並且如果表比較大,會比較難分配連續的儲存空間導致儲存資料失敗。因此可以採用鍊錶結構,鍊錶結構是一種動態儲存分配的結構形式,可以根據需要動態的申請所需的儲存單元。鍊錶又分為單鏈表,雙向鍊錶,以及單迴圈鍊錶,多重鏈的迴圈鍊錶。本文先介紹單鏈表。典型的單鏈表結構...