資料結構筆記之順序表

2021-07-11 07:10:26 字數 3871 閱讀 3602

由上圖可以看出元素位址滿足以下關係:

以圖書資料舉例,其型別定義如下:

#define maxsize 100 //最大長度

typedef

struct

book; //圖書結構型別

typedef

struct

sqlist; //圖書表結構型別

3.1初始化步驟

①為l分配乙個預定義大小的陣列空間,elem指向這段空間的基位址。

②將表的長度置為0。

status initlist(sqlist &l)

3.2取值步驟

①判斷i值合不合理。

②將第i個元素即l.elem[i-1]賦給e。

status getelem(sqlist l,int i,elemtype &e)

3.3查詢步驟

①從第乙個元素開始,依次比較,若相等返回i+1,若比較到最後也沒有找到則查詢失敗,返回0。

status locateelem(sqlist l,elemtype e)

查詢平均時間複雜度o(n)

3.4插入

步驟

①判斷插入位置是否合法。

②判斷儲存空間是否已滿。

③從後往前從第n至i依次往移動,空出第i各位置。

④將元素插入第i個位置。

status listinsert(sqlist &l,int i;elemtype e)

平均時間複雜度o(n)

3.5刪除

步驟

①判斷i是否合法。

②將第i+1個至n依次前移。

③表長減1。

status listdelete(sqlist &l, int i)

平均時間複雜度o(n)

3.6銷毀線性表l

void destroylist(sqlist &l)

3.7清空線性表
void clearlist(sqlist &l) 

#include

#include

#include

#include

using

namespace

std;

#define ok 1

#define error 0

#define overflow -2

typedef

int status; //status 是函式返回值型別,其值是函式結果狀態**。

typedef

int elemtype; //elemtype 為可定義的資料型別,此設為int型別

#define maxsize 100 //順序表可能達到的最大長度

struct book ;

typedef

struct sqlist;

status initlist_sq(sqlist &l)

status getelem(sqlist l, int i, book &e)

int locateelem_sq(sqlist l, double e)

status listinsert_sq(sqlist &l, int i, book e)

status listdelete_sq(sqlist &l, int i)

int main()

file >> head_1 >> head_2 >> head_3;

while (!file.eof())

cout

<< "輸入 book.txt 資訊完畢\n\n";

l.length = i;

file.close();

}break;

case

3://順序表的取值

cout

<< "請輸入乙個位置用來取值:\n";

cin >> i;

temp = getelem(l, i, e);

if (temp != 0) else

cout

<< "查詢失敗!位置超出範圍\n\n";

break;

case

4: //順序表的查詢

cout

<< "請輸入所要查詢**:";

cin >> price;

temp = locateelem_sq(l, price);

if (temp != 0) else

cout

<< "查詢失敗!沒有這個**對應的書籍\n\n";

break;

case

5: //順序表的插入

cout

<< "請輸入插入的位置和書本資訊,包括:編號 書名 **(用空格隔開):";

cin >> a;

cin >> e.id >> e.name >> e.price; //輸入a和b,a代表插入的位置,b代表插入的數值(書本資訊)

if (listinsert_sq(l, a, e))

cout

<< "插入成功.\n\n";

else

cout

<< "插入失敗.\n\n";

break;

case

6: //順序表的刪除

cout

<< "請輸入所要刪除的書籍的位置:";

cin >> c;

if (listdelete_sq(l, c))

cout

<< "刪除成功.\n\n";

else

cout

<< "刪除失敗.\n\n";

break;

case

7: //順序表的輸出

cout

<< "當前圖書系統資訊(順序表)讀出:\n";

資料結構之順序表

首先是標頭檔案seqlist.h ifndef seqlist h define seqlist h include includeusing namespace std define elemtype int define seqlist default size 10 typedef struc...

資料結構之順序表

順序表的思想容易了解,但是 不容易掌握,我這裡根據老師所提供的 進行一下簡單的總結 這個 包含順序表的查詢,插入,刪除,建表,輸出資料 includeusing namespace std define ok 1 define error 0 define overflow 2 typedef in...

資料結構之順序表

順序表就是按照順序儲存方式儲存的線性表,該線性表的結點按照邏輯次序一次存放在計算機的一組連續的儲存單元中如下圖 由於順序表是一次存放的,只要知道了該順序表的首位址以及每個資料元素所占用的儲存長度,那麼我們就很容易計算出任何乙個資料元素 也就是資料繫結點 的位置。1 結點資料型別 public cla...