線性表式最簡單且最簡單的一種資料結構,是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 ...