資料結構 順序線性表的實現和鏈式線性表的實現

2021-08-27 07:52:53 字數 2559 閱讀 3300

線性表式最簡單且最簡單的一種資料結構,是n個資料元素的有序序列。

本篇部落格參照了嚴慧敏版《資料結構(c語言版)》中線性表的實現,在書中,順序表的儲存結構定義如下

typedef structsqlist;
其中,element是自定義的抽象資料型別,在本篇部落格中,把這個抽象資料型別定義成乙個包含學生姓名name和學生學號stuno的student型別, 如下:

typedef structstudent;
讀者也可以定義其他型別。

順序線性表的優點:只要確定了儲存線性表的起始位置,線性表中的任一資料元素都可以隨機讀取,所以線性表的順序儲存結構是一種隨機讀取的儲存結構

順序線性表的缺點:插入或刪除某個元素時,需要移動大量元素

#include#include#include#define list_init_size 100

#define listincrement 10

#define ture 1

#define false 0

#define ok 1

#define error 0

#define infeasible -1

#define overflow -2

typedef int status;

typedef structstudent;

typedef structsqlist;

int initlist_sq(sqlist &l)

int destroylist(sqlist &l)

int listlength(sqlist l)

int listempry(sqlist l)

int getelem(sqlist l,int i,student &s)

int listinsert(sqlist &l,int i,student s)

student* q =&(l.student[i-1]);

for(student* p = &(l.student[l.length-1]);p>=q;--p)

//插入元素

*q = s;

l.length++;

return ok;

}int listdelete(sqlist &l, int i,student &s)

int compare(student s1, student s2)

int locatelem(sqlist l,student s,int(*compare)(student,student))

if(i<=l.length) return i;

else return 0;

}int main() //測試

鏈式線性表的優點:用一組任意的(可以是連續的,也可以是非連續的)的儲存單元儲存資料元素;插入和刪除元素時比較簡單,不需要移動資料元素。

鏈式線性表的缺點:不支援隨機訪問,只能從頭節點依次向後遍歷。

#include#include#include#define list_init_size 100

#define listincrement 10

#define ture 1

#define false 0

#define ok 1

#define error 0

#define infeasible -1

#define overflow -2

typedef int status;

typedef structstudent;

typedef struct lnodelnode,*linklist;// linklist的資料型別為 lnode*;即指向自己的乙個指標

int initlist(linklist &l)

int clearlist(linklist &l)

return ok;

}int destroylist(linklist &l)

int getlength(linklist l)

return n;

}int isempty(linklist l)

int getelem(linklist l,int i,student &s)

s=p->student;

return ok;

}void scanlist(linklist &l)

}void printlist(linklist l)

}}int insertlist(linklist &l,int i,student s)

if(j==getlength(l)+1)

else

return ok;

}int deletelist(linklist &l,int i,student &s)

if(j==getlength(l))else

return ok;

}int main()

php實現資料結構線性表(順序和鏈式)

鍊錶操作 1 initlist l 初始化鍊錶 2 destroylist l 刪除連線 3 clearlist l 清空鍊錶 4 listempty l 判斷是否為空 5 listlength l 鍊錶長度 6 getelem l,i 取出元素 7 locateelem l,e 判斷e是否在鍊錶中...

資料結構 c 線性表 順序表和鏈式表

因為已經大三下學期,準備暑假找實習,以前學得渣,這段時間惡補下基礎!資料結構和演算法搞起 線性表包括順序儲存和鏈式儲存兩種形式。首先定義巨集,為線性表分配初始記憶體空間和再分配用 定義結構體,內部定義指標作為線性表的基址,動態分配後就可以用下標訪問,跟陣列一樣,陣列a 10 a是指向第乙個元素的指標...

資料結構線性表的順序和實現

資料結構線性表的順序和實現 語言 c ide vs include pch.h include string.h include conio.h include define crt secure no warnings using namespace std define ok 1 define ...