在學習資料結構線性表後,其實是有很多不太清楚的地方。為了加深理解和記憶,現在這裡整理下基本思路和**實現:
以下為順序表的整理,順序儲存方法即把線性表的結點按邏輯次序依次存放在一組位址連續的儲存單元裡的方法,以陣列為載體。
線性表的基本操作包括初始化、銷毀、判斷表空、查詢表長、插入、刪除、查詢指定位置元素值、查詢指定元素位置、輸出表。
status initlist(seqlist *l); //初始化
status destroylist(seqlist *l); //銷毀
status isempty(seqlist l, int *empty); //判斷是否為空,將結果返回empty,
status getlength(seqlist l, int *lenp); //查詢表長,將結果返回給lenp
status insertlist(seqlist *l, int i, elemtype e); //插入操作
status deletelist(seqlist *l, int i, elemtype *e); //刪除操作
status getdata(seqlist l, int i, elemtype *e); //查詢指定位置元素
status getlocation(seqlist l, int *i, elemtype e); //查詢指定元素位置
status printlist(seqlist l); //輸出表中所有元素
定義順序表的儲存結構:
typedef int elemtype; //elemtype的型別可根據實際情況而定,這裡假設為int
typedef struct seqlist;
注意:表的長度=len+1
1、初始化順序表:
status initlist(seqlist *l)
2、銷毀線性表:
status destroylist(seqlist *l)
注意釋放dataspace的空間後,需要將該指標置空
3、判斷是否為空:
status isempty(seqlist l, int *empty)
4、查詢表長
status getlength(seqlist l, int *lenp)
5、插入操作
status insertlist(seqlist *l, int i, elemtype e)
插入操作要注意區別插入的物理位置和結點的邏輯順序保持一致,因為結點是從0位開始的,而實體地址從1開始
6、刪除操作
status deletelist(seqlist *l, int i, elemtype *e)
7、查詢指定位置元素值
status getdata(seqlist l, int i, elemtype *e)
8、查詢指定元素位置
status getlocation(seqlist l, int *i, elemtype e)
} *i = 0; //否則查詢失敗
return ok;
}
9、輸出表中所有元素
status printlist(seqlist l)
//
/
/下面是原始碼,三個檔案依次為:seqlist.h、seqlist.cpp、main.cpp#pragma once
#define ok 1
#define error -1
#define maxsize 100
typedef int status;
typedef int elemtype; //elemtype的型別可根據實際情況而定,這裡假設為int
typedef struct seqlist;
status initlist(seqlist *l); //初始化
status destroylist(seqlist *l); //銷毀
status isempty(seqlist l, int *empty); //判斷是否為空,將結果返回empty,
status getlength(seqlist l, int *lenp); //查詢表長,將結果返回給lenp
status insertlist(seqlist *l, int i, elemtype e); //插入操作
status deletelist(seqlist *l, int i, elemtype *e); //刪除操作
status getdata(seqlist l, int i, elemtype *e); //查詢指定位置元素
status getlocation(seqlist l, int *i, elemtype e); //查詢指定元素位置
status printlist(seqlist l); //輸出表中所有元素
#include#include#include"seqlist.h"
status initlist(seqlist *l)
status destroylist(seqlist *l)
status isempty(seqlist l, int *empty)
status getlength(seqlist l, int *lenp)
status insertlist(seqlist *l, int i, elemtype e)
status deletelist(seqlist *l, int i, elemtype *e)
status getdata(seqlist l, int i, elemtype *e)
status getlocation(seqlist l, int *i, elemtype e)
} *i = 0; //否則查詢失敗
return ok;
}status printlist(seqlist l)
#include#include"seqlist.h"
int main()
printf("\n");
} while (op > 0);
return 0;
}
部分執行截圖如下:
線性表的順序儲存 順序表
一丶順序表 概念 採用順序儲存的線性表稱為順序表,順序表中邏輯上相鄰的資料元素在物理儲存位置上也是相鄰的。二丶定義順序表 用一維陣列來描述順序表的資料儲存。由於順序表有插入刪除等操作,即順序表的表長會發生改變。因此是陣列長度足夠大,加入整型變數length來記錄此時線性表中資料元素的個數,順序表的結...
線性表的順序儲存 順序表
線性表,簡稱表,是n n 0 個具有相同型別的資料元素的有限序列。1 線性表是乙個相當靈活的資料結構,對線性表的資料元素不僅可以進行訪問訪問,還可以進行插入和刪除等操作。2 a1稱為第1個元素,an稱為最後乙個元素,任意一對相鄰的資料元素a i 1 和a i 1序偶關係 且a i 1 稱為a i 的...
線性表的順序儲存 順序表
線性表可以按照其儲存結構劃分為順序表 鍊錶。如下圖 順序表 順序表的描述 1 陣列靜態分配 define maxsize 30 typedef int elemtype typedef structsqlist 2 陣列動態分配 define maxsize 30 typedef int elemt...