1、 靜態分配
//1、宣告
#define
maxsize
50//定義線性表的最大長度
typedef
struct
sqlist;
//順序表的型別定義
靜態分配使用舉例
#
include
#define
maxsize
50//定義線性表的最大長度
typedef
struct
sqlist;
//順序表的型別定義(靜態分配方式)
//2、初始化操作(乙個靜態分配的順序表)
void
initlist
( sqlist &l )
intmain()
注:
順序表的初始化中的步驟2,可省略;步驟1、3是必須有的
可省略的原因是,在訪問順序表中的元素時,應該不超過其表長length,而原**中直接訪問到了最大容量,這是不合理的。
2、動態分配
#
define
initsize
100//順序表的初始長度
typedef
struct
seqlist;
//順序表的型別定義(動態分配方式)
動態分配使用舉例
//1、宣告
#include
#define
initsize
100//順序表的初始長度
typedef
struct
seqlist;
//順序表的型別定義(動態分配方式)
//2、初始化(乙個動態分配的順序表)
void
initlist
( seqlist &l )
//增加動態陣列的長度
void
increasesize
( seqlist &l,
int len )
l.maxsize = l.maxsize + len;
//順序表最大長度增加len
free
(p);
//釋放原來的記憶體空間
}int
main()
注:
動態分配的原理:開闢一段新空間,將舊空間的資料複製到新空間中
靜態分配和動態分配的區別:
動態分配使用的陣列儲存資料,宣告之後陣列的大小就不可更改
動態分配使用malloc和free函式動態申請和釋放記憶體空間,並使用指標來指向這段記憶體空間
1、 插入——o(n)
//3、插入操作
bool listinsert
(sqlist &l,
int i, elemtype e)
注:
注意插入元素時,其後面的元素從後向前依次後移
注意順序表位序和陣列下標的差別:位序從1開始,下標從0開始。所有在第i個位置插入e為——l.data[i-1] = e;
2、刪除——o(n)
//4、刪除操作
//刪除順序表l中第i個位置的元素,若成功返回true,並將被刪除的元素用e返回,否則返回flase
bool listdelete
(sqlist &l,
int i, elemtype &e)
//舉例
intmain()
2>按值查詢——o(n)
//6、按值查詢
//在順序表中找到第乙個元素值等於e的元素,並返回其位序
intlocateelem
(sqlist l, elemtype e)
return0;
}
4、其他基本操作
//7、求表長
length
(l);
//返回線性表l的長度,即表中資料元素的個數
//8、輸出操作
printlist
(l);
//按前後順序輸出線性表l的所有元素值
//9、判空操作
empty
(l);
//若l是空表,返回true,否則返回false
//10、銷毀操作
destroylist
(&l)
;//銷毀線性表,並釋放其所占用的記憶體空間
資料結構線性表之順序表
純手打順序表相關操作,包括順序表的建立 初始化 輸出 插入 刪除 銷毀等,僅供自己回顧使用,可能會有不對的或者不恰當的地方望大家指正,共同學習。如下 資料結構順序表 include include include define maxsize 100 using namespace std type...
資料結構 線性表之順序表
線性表是包含若干資料元素的乙個線性序列 記為 l a0,ai 1,ai,ai 1 an 1 l為表名,ai 0 i n 1 為資料元素 n為表長,n 0 時,線性表l為非空表,否則為空表。線性表l可用二元組形式描述 l d,r 即線性表l包含資料元素集合d和關係集合r d r 關係符在這裡稱為有序對...
mysql 線性表 資料結構 線性表之順序線性表
public class sequencelist else stringbuilder sb new stringbuilder for int i 0 i size i int len sb.length public class sequencelisttest public static v...