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