資料結構 1 線性表

2021-09-26 04:59:30 字數 2483 閱讀 7979

adt 線性表(list)

data

線性表的資料物件集合為,每個元素型別均為datatype。其中,除第乙個

元素a1外,每乙個元素有且只有乙個直接前驅元素,除最後乙個元素an外,每乙個元素有且

只有乙個直接後繼元素。資料元素之間的關係是一對一的關係。

operation

initlist( *l) : 初始化操作,建立乙個空的線性表l

listempty(l): 若線性表為空,返回ture

clearlist(*l): 將線性表清空

getelem(l, i, *e): 將線性表l中的第i個位置元素值返回給e

如果成功,返回該元素在表中序號;否則返回0

listdelete(*l, i, *e):刪除線性表l中第i個位置元素,並用e返回其值

listlength(l):   返回線性表l的元素個數

endadt

//順序儲存結構

#define maxsize 20 //儲存空間初始分配量

typedef int elemtype; //elemtype型別根據實際情況而定,這裡假設為int

typedef struct

sqlist;

插入操作 listinsert( *l, i, e)

刪除操作 listdelete(*l, i, *e)

//線性表的單鏈表儲存結構

typedef struct node

node;

typedef struct node *linklist;

獲取鍊錶第i個資料:

宣告乙個p指向第乙個結點,初始化j從1開始;

當j若到鍊錶末尾p為空,則說明第i個結點不存在;

否則返回結點p的資料。

單鏈表的插入:

宣告乙個p指向第乙個結點,初始化j從1開始;

當j若到鍊錶末尾p為空,則說明第i個結點不存在;

否則,生成乙個空結點s; //s = (linklist) malloc (sizeof(node));

將資料元素e賦值給s->data;

單鏈表的插入標準語句s->next=p->next; p->next=s;

返回成功。

單鏈表的刪除:

宣告乙個p指向第乙個結點,初始化j從1開始;

當j若到鍊錶末尾p為空,則說明第i個結點不存在;

否則,將欲刪除的結點p->next賦值給q;

單鏈表的刪除標準語句p->next=q->next;

將q結點中的資料賦值給e,作為返回;

釋放q結點;

返回成功。

將單鏈表中終端結點的指標由指向null改為指向頭結點。

為方便,指向頭結點的頭指標可廢除,新增尾指標(rear)指向最後乙個結點,此時,第乙個結點便可用rear->next->next表示。

//雙向鍊錶儲存結構

typedef struct dulnode

dulnode, *dulinklist;

雙鏈表的插入: (順序不可亂,先從s的前後指向,再p->next的前驅,p的後繼)

s->prior = p;			//s的前驅指向p

s->next = p->next; //s的後繼指向p->nex

p->next->prior = s; //p->next的前驅指向s

p->next = s; //p的後繼指向s

雙鏈表的刪除:

p->prior的後繼指向p->next;

p->next的前驅指向p->prior;

釋放p。

即不用指標的鍊錶。

//線性表的靜態鍊錶儲存結構

#define maxsize 1000

typedef struct

component, staticlinklist [maxsize];

未被使用的陣列元素稱為備用鍊錶。

第乙個和最後乙個元素不存資料,第乙個元素(下標為0)的cur存放備用鍊錶的第乙個結點的下標,而最後乙個元素的cur存放第乙個有數值的結點的下標。

靜態鍊錶的插入:

取得備用鍊錶的第乙個結點的下標,即下標為0的結點的cur;

將備用鍊錶的第乙個結點的cur賦值給下標為0的結點的cur,即使頭結點指向原備用鍊錶的第二個結點的下標;

迴圈找到第i-1個已賦值的結點,將其cur(即第i個已賦值結點的下標)賦值給備用鍊錶第乙個結點的cur,並將備用鍊錶第乙個結點的下標賦值給第i-1個已賦值結點的cur;

將資料賦值給原備用鍊錶第乙個結點。

靜態鍊錶的刪除:

void free_ssl (staticlinklist space, int k)

status listdelete (staticlinklist l, int i)

資料結構線性表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 線性表是有限的,即他能夠處理的元素是有限的 舉列 請問公司的組織架構是否屬於線性關係?答...

資料結構 1 線性表

線性表的順序儲存結構指的是用一段位址連續的儲存單元依次儲存線性表的資料元素。int getelem sqlist l,int i,elemtype e e l.data i 1 return 1 插入演算法思路 1.如果插入的位置不合理,丟擲異常。2.如果線性表的大小大於等於陣列長度,則丟擲異常或動...