順序表也就是我們常說的陣列,今天就是把對於陣列 的各種操作封裝成類,下面就來看具體的實現:
我們先來看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 一群人...