資料結構實驗1 線性表 鍊錶

2021-09-29 01:32:58 字數 2107 閱讀 7024

線性表的順序儲存與鍊錶儲存,實現資料插入、刪除運算。

將1中儲存結構改為迴圈鍊錶、雙向鍊錶、迴圈雙向鍊錶等,實現資料插入、刪除。

線性表:

#include#include#include#define ok 1

#define error 0

#define overflow 0

#define list_init_size 100

#define listincrement 10

typedef struct

sqlist;

int initlist_sq(sqlist *l) /*建立乙個空線性表*/

int listinsert_sq(sqlist *l, int i, int e)/*插入乙個元素*/

q = &(l->elem[i - 1]);

for (p = &l->elem[l->length - 1]; p >= q; --p)

*(p + 1) = *p;

*q = e;

l->length++;

return ok;

}int listdelete_sq(sqlist *l, int i) /*刪除乙個元素*/

int locatelem_sq(sqlist *l, int e) /*查詢元素並輸出位序*/

void output(sqlist *l) /*輸出順序表*/

void input(sqlist *l) /*輸入資料*/

}void judge(sqlist *l) /*判斷是否為空表*/

鍊錶:

#include#include#include#define ok 1

#define error 0

#define overflow 0

typedef struct lnode

lnode, *linklist;

void createlist(linklist *l, int n) /*建立乙個新鍊錶並賦值*/

r->next = null;

}int listinsert(linklist *l, int i, int e) /*插入乙個元素*/

if (!p)

return error;

s = (linklist)malloc(sizeof(lnode));

s->data = e;

s -> next = p->next;

p ->next = s;

return ok;

}int listdelete(linklist *l, int i) /*刪除乙個元素*/

if (!(p->next) || j>i)

return error;

q = p->next;

p->next = q->next;

free(q);

return ok;

}int locateelem_ll(linklist *l, int e) /*查詢元素並輸出位序*/

p = p->next;

} if (k == 0)

return error;

}int output(linklist *l) /*輸出鍊錶*/

int judge(linklist *l) /*判斷是否為空表*/

else }

int listlength(linklist *l) /*輸出鍊錶長度*/

int output_l(linklist *l,int e) /*輸出某一位元素*/

printf("鍊錶第%d位元素為:%d\n",e, p->data);

return ok;

}int main()

資料結構 線性表 鍊錶

在之前了解完什麼是資料結構之後 資料結構 線性表 順序表 陣列 我們再來看看線性結構另外一種實現方式 鍊錶順序表中的鍊錶沒有物理上的連續儲存要求,只需要在儲存資料時通過 鏈 的方式將資料進行連線,而這個 鏈 的實現就是通過指標來實現的。鍊錶的連續儲存方式 對於抽象資料型別來說,每一種資料結構都有自己...

資料結構線性表1

include include include struct arr 定義了乙個資料型別,該資料型別的名字是struct arr void init arr struct arr parr,int length bool insert arr struct arr parr,int pos,int ...

資料結構 線性表1

一 線性表 定義 由零個或多個資料元素組成的有限序列。強調 1 線性表是乙個序列,也就是說元素之間是有先來後到的 2 若元素存在多個,則第乙個元素無前驅,最後乙個元素無後繼,其他元素都有且只有乙個前驅和後繼 3 線性表是有限的,即他能夠處理的元素是有限的 舉列 請問公司的組織架構是否屬於線性關係?答...