目錄順序表
單鏈表雙鏈表
小結習題
元素為單個的資料元素
元素個數有限
元素資料型別相同
有邏輯上的先後關係
initlist(&l)
,構造乙個空的線性表。
length(l)
,返回線性表長度。
locateelem(l,e)
,根據值查詢元素。
getelem(l,i)
,根據索引查詢元素。
listinsert(&l,i,e)
,在指定索引處插入元素。
listdelete(&l,i,&e)
,刪除指定索引處的元素,並使用引用返回刪除元素的值。
printlist(l)
,順序輸出線性表索引的元素。
empty(l)
,判斷線性表是否為空。
destroylist
,銷毀線性表。
線性表的順序儲存結構稱之為順序表。
相對於鍊錶,順序表最重要的特徵是隨機訪問,即順序表可以使用o(1)的時間找到指定索引的元素。
靜態定義:
#define max 50
typedef structsqlist;
動態定義:
#define initsize 100
typedef structsqlist;
l.data = (int*)malloc(sizeof(int)*initsize) //c的動態分配方式
l.data = new int[initsize] //c++的動態分配方式
這裡分清楚次序與陣列下標或者說索引,次序從1開始,陣列下標從0開始,我們這裡預設i
是索引。max
插入,複雜度o(n)。
bool listinsert(sqlist &l, int i, int e)
刪除,複雜度o(n)。
bool listdelete(sqlist &l, int i, int &e)lnode, *linklist;
通常使用頭指標來表示乙個鍊錶。為了操作上的方便有的時候也會在頭指標之前附加乙個頭結點。
頭結點一般不儲存資料。
下面的所有操作都是以有頭結點為例子的。
頭插法建立鍊錶
linklist creatlist(linklist &l)
return l;
}
尾插法
linklist creatlist(linklist &l)
r->next=null; // 尾結點置空
return l;
}
序號索引
lnode* getelem(linklist l, int i)
return p;
}
插入結點
p=getelem(l, i-1);
s->next=p->next;
p->next=s;
刪除結點
p=getelem(l,i-1);
q=p->next;
p->next=q->next;
free(q);
typedef struct dnode
插入,在p後插入乙個s節點
s->next=p->next;
p->next->prior=s;
s->prior=p;
p->next=s;
刪除乙個p之後的q節點
p->next=q->next;
q->next->prior=p;
free(q);
關於順序表和煉表的一些重要的比較:
訪問方式
增刪查操作
所以,順序表適合查詢場景,鍊錶適合頻繁增刪的場景。
暫空。
計算機考研之資料結構 棧與佇列
目錄佇列 小結習題 一類操作受限的線性表。順序儲存 定義typedef struct sqstack 操作 void initstack sqstack s bool isempty sqstack s bool push sqstack s,int x bool pop sqstack s,int...
考研資料結構 線性表
線性表是具有相同特徵資料元素的乙個有限序列。元素個數叫做線性表的長度,n n 0 表示,n 0 空表 只有乙個表頭元素,只有乙個表尾元素。表頭無前驅,表尾無後繼,除表頭和表尾外,其他元素只有乙個直接前驅,也只有乙個直接後繼。順序儲存結構 順序表 和鏈式儲存結構 鍊錶 兩種。順序表 連續儲存 順序儲存...
考研計算機資料結構(個人筆記) 第2章 線性表
為了考研過程中方便總結看書和聽課的記錄,決定將一些內容敲成部落格以供自己複習和使用,僅供參考。define maxsize 100 這裡定義了乙個整型常量maxsize,值為1001 順序表的結構體定義 typedef struct sqlist 考試中順序表簡寫 int a maxsize int...