靜態鍊錶的建立以及基本操作

2021-06-18 13:03:18 字數 1578 閱讀 1534

#include #include #define max 100

typedef int elemtype;

/*定義每個節點的資料資訊*/

typedef struct node

slnode;

/*靜態鍊錶的定義*/

typedef struct static_list

sqlist;

int main()

/*提示鍊錶的狀態。為空或者滿或者非空非滿*/

if(0==judge_list_empty(sl))

else

/*呼叫資料查詢函式,位址不合法則重新輸入*/

if(-1==research_list(sl))

/*呼叫刪除元素函式,位址不合法則重新輸入*/

if(-1==delete_list(&sl))

/*顯示靜態鍊錶的內容*/

show_list(sl);

return 0;

} int init_static_list(sqlist *l)

(*l).store[max-1].next=-1;//(1)中的-1表示的是資料元素空間的結尾,而在這裡指的是空閒空間的結尾

printf("the static list initialed success!!!\n");

return 0;

} /*建立靜態鍊錶(這裡運用的是尾插法)*/

int creat_static_list(sqlist *l)

return 0;

} /*求長函式的定義*/

int length_list(sqlist l)

return count;//將鍊錶的長度返回

} /*判空函式定義*/

int judge_list_empty(sqlist l)

/*判滿函式定義*/

int judge_list_full(sqlist l)

/*靜態鍊錶顯示函式*/

void show_list(sqlist l)

/*最後乙個資料是沒有被輸出出來的,所以以下對於最後乙個元素做了單獨的輸出*/

printf("no.%d 's data is %d\n",i,l.store[i].data);

printf("there is no data left\n");

} /*靜態鍊錶插入資料函式*/

int insert_list(sqlist *l)

//迴圈查詢到相應的位置

printf("the data you rearched is :%d\n",l.store[p].data);

} return 0;

} int delete_list(sqlist *l)

//找到刪除位置的上乙個位置

q=(*l).store[p].next;//找到刪除的元素位置

(*l).store[q].next=(*l).free_h;//將刪除的元素的空間加入到空閒鍊錶的頭部

(*l).free_h=q;//空閒鍊錶的起始位址改變為新加入的刪除元素的位置

return 0;

}

靜態鍊錶的基本操作

靜態鍊錶的基本操作包括建立與輸出,刪除與插入操作與單鏈表類似,麻煩的點在於每次遍歷都要建立兩個臨時變數,還要特殊判斷第乙個節點,並將刪除後的節點再次初始化其游標的值,就不寫了 include include typedef struct node node define maxsize 1000 t...

靜態鍊錶的基本操作

上節,我們初步建立了乙個靜態鍊錶,本節學習有關靜態鍊錶的一些基本操作,包括對錶中資料元素的新增 刪除 查詢和更改。本節是建立在已能成功建立靜態鍊錶的基礎上,因此我們繼續使用上節中已建立好的靜態鍊錶學習本節內容,建立好的靜態鍊錶如圖 1 所示 圖 1 建立好的靜態鍊錶 例如,在圖 1 的基礎,將元素 ...

鍊錶的基本概念以及靜態鍊錶和動態鍊錶

鍊錶概念 鍊錶使用說明 畫圖示意 建立關係 node1.next node2 node2.next node3 node3.next node4 node4.next node5 node5.next null lk struct linknode lk nodecurrent node1 遍歷輸出...