初始化順序表, 建立順序表,增加順序表的空間,取值,查詢操作-按值查詢,插入,刪除,求表長,判空,合併有序(遞增)順序表,輸出順序表
隨機訪問,只要o(1)的時間就可以取出第i 個元素
需要預先分配最大空間,空間過大會造成浪費,插入和刪除操作需要移動大量元素
#ifndef shunxubiao_h
#define shunxubiao_h
#endif
#include
#include
using
namespace std;
#define initsize 10
int maxsize;
//這樣定義順序表可移植性,通用性高
typedef
int elemtype;
//int的別名elemtype,二者等價
//elemtype=element type 用「elemtype」代表所有可能的資料型別,簡單明瞭的概括了整體。在演算法中,除特別說明外,規定elemtype的預設是int型
//typedef作用是為一種資料型別定義乙個新名字,這裡的資料型別包括內部資料型別(int,char等)和自定義的資料型別(struct等)
//使用typedef為現有型別建立別名,給變數定義乙個易於記憶且意義明確的新名字。
typedef
struct
sqlist;
//初始化順序表
bool
initlist
(sqlist &l)
//l前加&表示引用型別引數,函式內部的改變跳出函式後仍有效
//不加&則函式內部的改變,在跳出函式後無效
//建立順序表
bool
createlist
(sqlist &l)}}
x=-1
;return
true;}
//增加順序表的空間
void
increase
(sqlist &l,
int newlen)
free
(p);
//釋放原來的空間
}//取值
elemtype getelem
(sqlist &l,
int i)
//使用elemtype 可以是各種型別的函式,不指定具體函式型別,可改性高
//查詢操作-按值查詢:查詢表l中第乙個元素值為e的元素,並返回其位序
intlocateelem
(sqlist &l, elemtype e)
//查詢演算法複雜度:
/*最好情況:查詢一次就找到(即找的是表中第乙個元素)時間複雜度為o(1)
最壞情況:查詢n=l.length次,時間複雜度為o(n)
平均情況:若元素在第乙個位置需要比較1次,在第二個位置需要比較2次,在第i 個位置需要比較i 次,則平均時間複雜度=pi*i(從1到n求和)pi是查詢概率
若查詢概率均等則平均時間複雜度為o(n)
*///插入操作:在表l的位序i上插入指定元素e
bool
insertlist
(sqlist &l,
int i, elemtype e)
/*插入演算法複雜度
在第i 個位置插入,則從第i個元素到第n個元素都要後移,則需要移動n-i+1 ;有n+1種插入情況:從第乙個插入到插入到第n+1位置
平均時間複雜度=pi*(n-i+1)(從1到n+1求和)pi是每個位置插入的概率 ,若插入概率均等則平均時間複雜度為 o(n) */
//刪除操作:刪除表中位序為i的元素,並用e返回刪除元素的值
bool
listdelete
(sqlist &l,
int i, elemtype& e)
e = l.elem[i -1]
;//位序i的元素保留在e中,防止被覆蓋,以後可能有用
for(
int j = i; j < l.length; j++
)//將第i個元素之後的元素前移,從第i+1個元素開始前移
l.elem[j -1]
= l.elem[j]
; l.length--
;//順序表長度-1
return
true;}
/*刪除演算法複雜度
順序表刪除一共有n種情況,每個情況移動元素個數為n-(i+1)+1=n-i(刪除第i 個元素,從第i+1個元素開始移動)
平均時間複雜度=pi*(n-i)(從1到n求和)pi是刪除概率;若刪除概率均等則平均時間複雜度=o(n)
*///求表長
intlength
(sqlist &l)
//判空
bool
empty
(sqlist &l)
else
}//合併有序(遞增)順序表
//不斷從la,lb中取數,比較大小,將較小者放入lc中,一直進行下去,直到把其中乙個順序表la或lb中的數取完為止,若la或lb中仍有多餘,則把多餘的數放入lc表尾
void
mergesqlist
(sqlist &la,sqlist &lb,sqlist &lc)
else
}while
(i=lb.length)
// la有剩餘,將la中剩餘元素放入lc表尾部
while
(j=la.length)
//lb有剩餘,將lb中剩餘元素放入lc表尾部
}//輸出順序表
void
showsqlist
(sqlist &l)
#include
#include
"shunxubiao.h"
using
namespace std;
intmain()
c 實現順序表(資料結構)
pragma once 防止重複編譯 include include using namespace std template class type class seqlist bool isempty const public void push back const type x 尾插 此con...
資料結構 用C 實現順序表
sequence list array 線性表的順序儲存結構,指的是用一段位址連續的儲存單元依次儲存線性表的資料元素 順序表為靜態儲存分配,需要事先確定容量 老師課上提供了乙個class模板,如下 那麼,我們現在可以根據這個模板開始造輪子了。實現思路很簡單,按照上面提供的函式用自己的方法一步步完善就...
資料結構(順序表的實現)
include define max len 100 容器的最大存量 using namespace std 各種資料結構,無非 建構函式 初始化 什麼資料型別 插入 插入的位置和插入的元素 刪除 刪除那個元素 查詢 按值查詢還是按址查詢以及查詢的方向 遍歷 下標遍歷和迭代器遍歷 cout 順序表 ...