資料結構 線性表(順序表 鍊錶)

2021-08-16 08:57:00 字數 2745 閱讀 4974

線性表

1、線性表是一種邏輯結構,表示一種一對一的邏輯關係,除首節點和尾節點,每個結點只有乙個前驅結點和乙個後繼結點

2、兩種實現的物理結構:順序儲存,鏈式儲存

順序表

1、定義:用一組位址連續的儲存單元,一次儲存線性表中的元素,使得邏輯位置相鄰的元素物理位置也相鄰。

2、特點:

順序表元素的位序從1開始

順序表可以隨機訪問,通過首位址和序列號找到指定元素的時間複雜度為o(1)

順序表儲存密度高,每個結點只儲存資料元素

順序表進行插入刪除操作平均時間複雜度為o(n)

順序表的一維陣列可以靜態分配也可以動態分配。

(一)靜態分配

#include 

#include

#include

#define size 100

#define ok 1

#define error 0

//靜態儲存

typedef

struct sqllist;

//初始化表,構造乙個空的線性表

int initlist(sqllist &l)

//求表長

int length(sqllist l,int &len)

len = l.length;

return ok;

} //利用隨機數建立順序表

int creatlist(sqllist &l,int len)

l.length = len;

return ok;

}//列印鍊錶

int printlist(sqllist l)

printf("\n");

return ok;

} //在鍊錶第i個元素插入元素

int insertlist(sqllist &l,int i,int e)

l.data[i-1] = e;

l.length++;

return ok;

} //刪除鍊錶第i個位置的元素,並返回元素的值

int deletelist(sqllist &l,int i,int &e)

l.length--;

return ok;

} //按位查詢,獲取表第i個位置的元素值

int getelem(sqllist l,int i,int &e)

//按值查詢,在表中查詢具有給定關鍵值的元素,只返回第乙個匹配元素的位置

int locateelem(sqllist l,int e,int &locate)

}locate = null;

return ok;

} //判斷線性表是否為空

(二)動態分配

參考部落格:

關於ifndef的用法

鍊錶

1、邏輯位置相鄰,物理位置不一定相鄰的線性表。

2、適合做插入刪除操作

3、分類:單鏈表,雙鏈表,區分依據是含有幾個指標域

(一)單鏈表

#include

#include

typedef int elemtype ;

typedef struct lnodelnode,*linklist;

//頭插法建立單鏈表

linklist createlinklistbyhead(linklist &l)

return l;

} //尾插法建立單鏈表

linklist createlinklistbytail(linklist &l)

r->next = null;

return l;

}//列印單鏈表

void printlinklist(linklist l)

lnode *s = l;

while(s->next!=null)

printf("\n");

} //按位查詢 查詢第i個位置的元素值

lnode * getelem(linklist l,int

pos)

returns;}

//按值查詢結點 和該節點的位置

int locateelem(linklist l,int e)

lnode *s = l->next;

intpos = 1;

while(s)

pos = 0;

return

pos;

} int main(void)

else

pos = locateelem(l,5);

if(pos)

else

return

0;}

(二)雙鏈表

這裡寫**片
(三)迴圈單鏈表

這裡寫**片
(四)迴圈雙鏈表

這裡寫**片

資料結構之線性表(順序表 鍊錶)

線性表是資料結構的一種,乙個線性表是n個具有相同特性的資料元素的有限序列。線性表的邏輯結構簡單,便於實現和操作。線性表的特徵 1 線性表是乙個序列 2 n 0時,線性表是乙個空表 3 線性表中的第乙個元素無前驅,最後乙個元素無後繼,其他元素有且只有乙個前驅和後繼。4 線性表是有長度的,其長度就是元素...

資料結構 線性表 順序表

豐富了前邊的功能,更加完善。include include define list init size 100 線性表儲存空間的初始分配量 define listincrement 10 線性表儲存空間的分配增量 using namespace std const int overflow 2 ty...

資料結構 線性表 順序表

線性表是具有相同特性的資料元素的乙個有限序列。線性表的順序儲存結構是,把線性表中的所有元素按照其邏輯順序依次儲存到從計算機儲存器中指定的儲存位置開始的一塊連續的儲存空間。include include include define maxsize 50 using namespace std 假設l...