資料結構 靜態鍊錶

2021-10-02 22:28:52 字數 1827 閱讀 2263

//1.靜態鍊錶元素通常為乙個結構體,這個結構體包含資料域(data)和遊 > 標域(cursor)。鍊錶通過這樣的結構體陣列來定義。

//2.靜態鍊錶需要預先分配乙個較大的空間。在插入和刪除操作中不需移 > 動元素,僅需修改游標,仍具有鏈式儲存結構的主要優點

//3.對陣列的第乙個和最後乙個元素作特殊處理,不存放資料:通常將第乙個元素記錄備用鍊錶的開始位置,最後乙個元素記錄資料的開始位置。

//4.什麼是備用鍊錶:由於靜態鍊錶用陣列來實現,所以有儲存空間限制。我們將靜態鍊錶的儲存分為兩個部分,一為已經存放有資料的陣列元素,二為未使用的資料元素 即為備用鍊錶。

//5.陣列下標為0的元素 即第乙個元素的游標為備用鍊錶的開頭,陣列下標為length - 1 即陣列的最後乙個元素的游標存放鍊錶(有資料的那一部分)的開頭。

//6.用游標值得0來表示鍊錶的結尾。

//7.當乙個鍊錶元素被刪除時,該陣列元素將併入備用鍊錶

#include

#include

#define maxsize 6

//鍊錶的最大長度

//靜態線性單鏈表的儲存結構

typedef

struct

component, slinklist[maxsize]

;//初始化

void

initspace_sl

(slinklist space)

//獲取備用鍊錶首節點的下標

intmalloc_sl

(slinklist space)

return i;

}//求長度

intlenth_sl

(slinklist space)

return j;

}//插入 i是待插入的位置 e是要插入的值

//插入要做的操作:

//①將備用首節點拿出來用

//②調整節點指向

//③陣列首節點指向新的備用首節點

bool

insert_sl

(slinklist space,

int i,

int e)

space[j]

.cur = space[s]

.cur;

space[s]

.cur = j;

return1;

}else

return0;

}//把選定的節點放到備用區

void

free_sl

(slinklist space,

int i)

//刪除

void

delete_sl

(slinklist space,

int i)

m = space[k]

.cur;

space[k]

.cur = space[m]

.cur;

free_sl

(space, m);}

//列印

void

print_sl

(slinklist space)

printf

("\n");

}}intmain()

print_sl

(s);

printf

("表長是%d\n\n"

,lenth_sl

(s))

;delete_sl

(s,1);

print_sl

(s);

printf

("表長是%d\n\n"

,lenth_sl

(s))

;}

資料結構鍊錶 靜態鍊錶

1 在這裡我們首先要複習一下鍊錶c語言的定義 這看起來很簡單,但實際上至關重要!data域 存放結點值的資料域。next域 存放結點的直接後繼的位址 位置 的指標域 鏈域 也就是說next域儲存的是乙個位址,這個位址是下一節點的位址。注意 鍊錶通過每個結點的鏈域將線性表的n個結點按其邏輯順序鏈結在一...

資料結構 靜態鍊錶

首先我們讓陣列的元素都是由兩個資料域組成,data和cur。也就是說,陣列的每乙個下標都對應乙個data和乙個cur。資料域data用來存放資料元素,也就是通常我們要處理的資料 而游標cur相當於單鏈表中的next指標,存放該元素的後繼在陣列中的下標。我們把這種用陣列描述的鍊錶叫做靜態鍊錶。陣列的第...

資料結構 靜態鍊錶

include using namespace std struct node typedef node linklist define maxsize 20 void init linklist list int getlength linklist list int malloc linklis...