線性表的順序儲存與鍊錶儲存,實現資料插入、刪除運算。
將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 線性表是有限的,即他能夠處理的元素是有限的 舉列 請問公司的組織架構是否屬於線性關係?答...