資料結構 靜態鍊錶

2021-08-21 10:03:18 字數 2412 閱讀 8991

#include using namespace std;

struct node

;typedef node* linklist;

#define maxsize 20

void init(linklist list);

int getlength(linklist list);

int malloc(linklist list);

void free(linklist list, int address);

//bool insert(linklist*list, int target, int data);

bool insert(linklist list, int target, int data);

void show(linklist list);

bool delete(linklist list, int target);

int main()

delete(a, 19);

show(a);

system("pause");

return 0;

}//1到maxsize-3賦值1至maxsize-3 相當於將空閒的陣列串起來

void init(linklist list)

list[maxsize - 2].cur= 0;//這個是可用的最後乙個位址,malloc這個位址後,把這個位址的cur,就是0,傳給第0號元素,代表表滿了!!這個超級無敵重要!!

list[maxsize - 1].cur= 0;

}int malloc(linklist list)

return address;

}//刪除操作就相當於把待刪除的位址插入備用鍊錶的表頭

void free(linklist list,int address)

int getlength(linklist list)

return length;

}bool insert(linklist list, int target, int data)

int newaddress = malloc(list);//獲取位址

if (newaddress == 0)

int address = maxsize - 1;

int j = 1;

while (j < target)

p[newaddress].data = data;

p[newaddress].cur = p[address].cur;

p[address].cur = newaddress;

return true;

}void show(linklist list)

}bool delete(linklist list, int target)

int now_address = maxsize - 1;

int now_num = 1;

while (now_num < target)

list[now_address].cur = list[target].cur;

free(list, target);

return true;

}

《大話資料結構》裡面,初始化部分,是錯誤的!最後的兩位陣列的cur值都應該為0!!!!

bool insert2(linklist list, int target, int data)

int newaddress = malloc(list);//獲取位址

if (newaddress == 0)

int address = maxsize - 1;

int j = 1;

while (j < target&&address!=0)

if (address == 0)

p[newaddress].data = data;

p[newaddress].cur = p[address].cur;

p[address].cur = newaddress;

return true;

}bool delete2(linklist list, int target)

int now_address = maxsize - 1;

int now_num = 1;

while (now_num < target&&list[now_address].cur!=0)

if (list[now_address].cur == 0)

list[now_address].cur = list[target].cur;

free(list, target);

return true;

}

以上是插入和刪除的優化版本,主要是不需要進行計算鍊錶長度的優化,節省了時間。一直覺得書上的方法很蠢。。

資料結構鍊錶 靜態鍊錶

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

資料結構 靜態鍊錶

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

靜態鍊錶(資料結構)

靜態鍊錶 結構體變數中包含資料域和游標域 typedef struct node snode 靜態鍊錶 1.陣列的下標為0的元素的游標域存放的是未使用鍊錶的第乙個節點的下標。2.陣列的最後乙個元素 slist size 1 存放的是第乙個有資料值得元素的下標。3.最後乙個元素相當於單鏈表的頭結點。具...