SeqList 順序表的實現

2021-07-11 00:16:36 字數 3976 閱讀 9661

順序表也就是我們常說的陣列,今天就是把對於陣列 的各種操作封裝成類,下面就來看具體的實現:

我們先來看test.h的內容:

#ifndef _test_h_

#define _test_h

#include #include #include using namespace std;

templateclass seqlist

bool isempty()const

void push_back(const type &x);

void push_front(const type &x);

void pop_back();

void pop_front();

void insert_pos(const type &x,const type &t);

void insert_value(const type &x);

void delete_pos(const type &x);

void delete_value(const type &x);

int find_pos(const type &x);

bool find_value(const type &x);

void quick_sort(int left,int right);

int get_length();

void resver_seqlist();

void clear_seqlist();

void quit_system();

void remove_all(const type &t);

void destory();

void show_seqlist()const;

private:

enum;

type *base;

int capacity;

int size;

};templateseqlist::seqlist(int sz)

templateseqlist::~seqlist()

templatevoid seqlist::push_back(const type &x)

}templatevoid seqlist::show_seqlist()const

base[0] = x;

size++;

}}templatevoid seqlist::pop_front()

size--;

}}templatevoid seqlist::pop_back()

}templatevoid seqlist::insert_pos(const type &x,const type &t)

if(!isfull())

base[x] = t;

size++;

}}templatevoid seqlist::insert_value(const type &x)

if(i < 0)else

size++;

}}templatevoid seqlist::delete_pos(const type &x)

if(!isempty())

size--;

}}templatebool seqlist::find_value(const type &x)

else

}templateint seqlist::find_pos(const type &x)

else

}templatevoid seqlist::delete_value(const type &x)

index = find_pos(x);

if(index == -1)

for(int i = index;i < size;i++)

size--;

}templatevoid seqlist::quick_sort(int left,int right)

for(;i < j && base[i] < value;i++);

if(i < j)

}base[i] = value;

quick_sort(i + 1,right);

quick_sort(left,i - 1);

}}templatevoid seqlist::resver_seqlist()

}templateint seqlist::get_length()

templatevoid seqlist::clear_seqlist()

templatevoid seqlist::quit_system()

templatevoid seqlist::remove_all(const type &t)

for(int i = index;i < size;)

size--;

}else

}}templatevoid seqlist::destory()

#endif

下來來看main函式的實現:

#include"test.h"

int main()

break;

case 2:

cout<

while(cin>>item,item!=-1)

break;

case 3:

mylist.show_seqlist();

break;

case 4:

cout<

mylist.pop_front();

break;

case 5:

cout<

mylist.pop_back();

break;

case 6:

cout<

cin>>index;

cin>>item;

mylist.insert_pos(index,item);

break;

case 7:

cout<

cin>>item;

mylist.insert_value(item);

break;

case 8:

cout<

cin>>index;

mylist.delete_pos(index);

break;

case 9:

cout<

cin>>item;

mylist.delete_value(item);

break;

case 10:

cout<

cin>>item;

cout<>item;

if(mylist.find_value(item))

}return 0;

}

給出一些執行結果:

對於這個順序表個人認為還存在乙個問題就是,當陣列已經滿了時,再插入資料時,就要考慮對陣列的擴充套件,但在這個類裡面沒有考慮,但在我之前部落格裡寫過一篇動態陣列的封裝,在那裡面對擴充套件進行了考慮,大家可以參考參考。。。對了,在這個類的實現用到了模板類,該類對資料的型別不受影響,大大提高了**的復用。

1 1順序表 SeqList 的實現

標頭檔案 es seqlist.h ifndef es seqlist h define es seqlist h define es seqlist min capacity 8 線性表的初始容量 typedef void es seqlist 函式描述 返回乙個空的線性表 輸入引數 輸出引數 返...

seqlist 鍊錶

include stdio.h include stdlib.h typedef struct seqlist int initseqlist seqlist l int printseqlist seqlist l int getdataseqlist seqlist l,int i int lo...

使用順序錶類SeqList求解約瑟夫環問題

約瑟夫環 約瑟夫問題 是乙個數學的應用問題 已知n個人 以編號1,2,3.n分別表示 圍坐在一張圓桌周圍。從編號為k的人開始報數,數到m的那個人出列 他的下乙個人又從1開始報數,數到m的那個人又出列 依此規律重複下去,直到圓桌周圍的人全部出列。順序錶類seqlist參考 約瑟夫環運作如下 1 一群人...