計算機考研之資料結構 線性表

2022-08-23 12:48:10 字數 2218 閱讀 8540

目錄順序表

單鏈表雙鏈表

小結習題

元素為單個的資料元素

元素個數有限

元素資料型別相同

有邏輯上的先後關係

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...