陣列模擬鍊錶(靜態鍊錶)

2021-10-04 20:27:32 字數 1623 閱讀 9716

為了模擬鍊錶的操作,設定了乙個date(資料)以及cur(相當於指標域)

typedef

struct

list;

list s[size]

;//size為陣列大小

我們用s[size-1].cur來起頭指標的作用,指向鍊錶的第乙個元素的下標。

因為不能直接malloc出來乙個空間,需要s[0]來儲存乙個空的陣列下標即備用空間,方便使用。

int

initlist

(list *s)

//陣列初始化

s[size -1]

.cur =0;

//相當於鍊錶中head->netx=null;

return1;

}

當s[size-1].cur=0時可以知道靜態鍊錶為空

如果我們需要把乙個資料插入到第i位,回想一下鍊錶的操作,需要分配乙個新的空間,以及找到i-1位。

int

mymalloc

(list *s)

//分配空間

return0;

}

int

listinset

(list *s,

int i,

int d)

//資料插入(陣列,位置,資料)

s[j]

.cur = s[k]

.cur;

//相當於p->netx=q->netx;

s[k]

.cur = j;

//q->netx=p;

return1;

}return0;

}

刪除第i位,想一下鍊錶的操作,需要找到第i-1位,需要釋放第i位的空間。

void

myfree

(list*s,int j)

//釋放空間

int

listdel

(list*s,

int i)

//刪除某個位置的資料並返回刪除資料的值

j = s[k]

.cur;

//j為第i位的下標

e = s[j]

.date;

s[k]

.cur = s[j]

.cur;

myfree

(s,j)

;return e;

void

printf_1

(list*s)

printf

("%d %d\n"

, s[i]

.date, s[i]

.cur)

;}

與鍊錶相比,沒有解決表長難以確定的問題。

以上全為個人理解,有錯誤請指出

靜態鍊錶(陣列 鍊錶和靜態鍊錶的操作)

因為是線性表,不能只講鍊錶,所以今天提一下靜態鍊錶以及陣列 鍊錶 靜態鍊錶之間的對比。陣列基本結構沒得說,插入和刪除的操作也是有的 雖然看著不比較詭異 一般是動態分配乙個足夠長的,記錄有多少個元素後對這個個數進行加減,而不是每插入乙個就動態分配 其實這樣也行,要是不怕麻煩的話 另外在插入刪除操作之後...

陣列模擬鍊錶

單鏈表 include using namespace std int head 1 idx 0,e 100005 ne 100005 void add head int x void remove int k void add int k,int x intmain else if a d 刪除元...

陣列模擬鍊錶

單鏈表 實現乙個單鏈表,鍊錶初始為空,支援三種操作 1 向煉表頭插入乙個數 2 刪除第k個插入的數後面的數 3 在第k個插入的數後插入乙個數 現在要對該鍊錶進行m次操作,進行完所有操作後,從頭到尾輸出整個鍊錶。注意 題目中第k個插入的數並不是指當前鍊錶的第k個數。例如操作過程中一共插入了n個數,則按...