【資料結構】實現順序表(c++)

來源:互聯網
上載者:User

標籤:資料結構   順序表   c++   

標頭檔:

#pragma once#include <iostream>using namespace std;template <class Type>class SeqList{public:SeqList(size_t sz = INIT_SIZE);~SeqList();public:bool isfull()const{return size > capacity;}bool isempty()const{return size == 0;}public:void show_list();void tail_insert(const Type &x);void head_insert(const Type &x);void sort();void head_delete();void tail_delete();void pos_insert(int pos,const Type &x);void val_insert(const Type &x);void pos_delete(int pos);int find(const Type &x);void val_delete(const Type &x);int length();void reverse();void clear();void destroy();void quit_system(Type &x);private:enum{ INIT_SIZE = 8 };Type *base;size_t size;size_t capacity;};// 建構函式template<class Type>SeqList<Type>::SeqList(size_t sz = INIT_SIZE){capacity = sz > INIT_SIZE ? sz : INIT_SIZE;base = new Type[capacity];size = 0;}// 解構函式template<class Type>SeqList<Type>::~SeqList(){delete base;}// 顯示template<class Type>void SeqList<Type>::show_list(){if (size == 0){cout << "the table is empty!" << endl;return;}for (int i = 0; i < size; ++i){cout << base[i] << "  ";}cout << endl;}// 尾插template<class Type>void SeqList<Type>::tail_insert(const Type &x){// 判斷表是否滿if (isfull()){cout << "table is full,can not insert!" << endl;return;}// 進行尾插base[size] = x;size++;}// 頭插template<class Type>void SeqList<Type>::head_insert(const Type &x){// 判斷表是否滿if (isfull()){cout << "the table is full,can not insert!" << endl;return;}// 把元素往後移for (int i = size; i > 0; --i){base[i] = base[i - 1];}// 進行頭插base[0] = x;size++;}// 排序template<class Type>void SeqList<Type>::sort(){for (int i = 1; i < size; ++i){for (int j = 0; j < size - i; ++j){if (base[j]>base[j + 1]){int temp = base[j];base[j] = base[j + 1];base[j + 1] = temp;}}}}// 頭刪template<class Type>void SeqList<Type>::head_delete(){if (isempty()){cout << "the table is empty,can not delete!" << endl;return;}for (int i = 0; i < size; ++i){base[i] = base[i + 1];}size--;}// 尾刪template<class Type>void SeqList<Type>::tail_delete(){if (isempty()){cout << "the table is empty,can not delete!" << endl;return;}size--;}// 按位插入template<class Type>void SeqList<Type>::pos_insert(int pos,const Type &x){if (isfull()){cout << "the table is full,can not insert!" << endl;return;}if (pos<0 || pos>size){cout << "the position is illegal!" << endl;return;}else{for (int i = size; i > pos; --i){base[i] = base[i - 1];}base[pos] = x;size++;}}// 按值插入template<class Type>void SeqList<Type>::val_insert(const Type &x){if (isfull()){cout << "the table is full,can not insert!" << endl;return;}tail_insert(x);sort();}// 按位刪除template<class Type>void SeqList<Type>::pos_delete(int pos){if (isempty()){cout << "the table is empty,can not delete!" << endl;return;}if (pos<0 || pos>size - 1){cout << "the position is illegal!" << endl;return;}else{for (int i = pos; i < size; ++i){base[i] = base[i + 1];}size--;}}// 尋找template<class Type>int SeqList<Type>::find(const Type &x){for (int i = 0; i < size; ++i){if (base[i] == x)return i;}cout << "the value is not exist!" << endl;return 0;}// 按值刪除template<class Type>void SeqList<Type>::val_delete(const Type &x){if (isempty()){cout << "the table is empty,can not delete!" << endl;return;}int pos = find(x);for (int i = pos; i < size; ++i){base[i] = base[i + 1];}size--;}// 求表長template<class Type>int SeqList<Type>::length(){return size;}// 反轉表內容template<class Type>void SeqList<Type>::reverse(){if (isempty()){cout << "the table is empty, can not operate!" << endl;return; }int i = 0;int j = size - 1;while (i < j){int temp = base[i];base[i] = base[j];base[j] = temp;++i;--j;}}// 清除表template<class Type>void SeqList<Type>::clear(){size = 0;}// 摧毀表template<class Type>void SeqList<Type>::destroy(){base = NULL;}// 退出系統template<class Type>void SeqList<Type>::quit_system(Type &x){x = 0;}



主函數:

<pre name="code" class="cpp">// 用c++實現順序表#include "SeqList.h"int main(){SeqList<int> mylist;int input = 1;int insert;int pos;while (input){cout << "*********************************************************************" << endl;cout << "*     [1] show_list                       [2] tail_insert           *" << endl;cout << "*     [3] head_insert                     [4] sort                  *" << endl;cout << "*     [5] head_delete                     [6] tail_delete           *" << endl;cout << "*     [7] pos_insert                      [8] val_insert            *" << endl;cout << "*     [9] pos_delete                      [10] find                 *" << endl;cout << "*     [11] val_delete                     [12] length               *" << endl;cout << "*     [13] reverse                        [14] clear                *" << endl;cout << "*     [15] destroy                        [16] quit_system          *" << endl;cout << "*********************************************************************" << endl;cout << "please choose:";cin >> input;switch (input){case 1:mylist.show_list();break;case 2:cout << "please enter the number to be inserted(-1 end):" << endl;while (cin >> insert, insert != -1){mylist.tail_insert(insert);}break;case 3:cout << "please enter the number to be inserted(-1 end):" << endl;while (cin >> insert, insert != -1){mylist.head_insert(insert);}break;case 4:mylist.sort();break;case 5:mylist.head_delete();break;case 6:mylist.tail_delete();break;case 7:cout << "please enter the position you want to insert:" << endl;cin >> pos;cout << "please enter the number to be inserted:" << endl;cin >> insert;mylist.pos_insert(pos, insert);break;case 8:cout << "please enter the number to be inserted:" << endl;cin >> insert;mylist.val_insert(insert);break;case 9:cout << "please enter the position you want to delete:" << endl;cin >> pos;mylist.pos_delete(pos);break;case 10:cout << "please enter the number to be found:" << endl;cin >> insert;cout << mylist.find(insert) << endl;break;case 11:cout << "please enter the number you want to delete:" << endl;cin >> insert;mylist.val_delete(insert);break;case 12:cout << mylist.length() << endl;break;case 13:mylist.reverse();break;case 14:mylist.clear();break;case 15:mylist.destroy();break;case 16:mylist.quit_system(input);break;default:break;}}return 0;}

show功能:


<img src="http://img.blog.csdn.net/20150518174746615?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemhhb3lhcWlhbjU1Mg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />

尾插:

<img src="http://img.blog.csdn.net/20150518174917630?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemhhb3lhcWlhbjU1Mg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />

頭插:

<img src="http://img.blog.csdn.net/20150518175227435?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemhhb3lhcWlhbjU1Mg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />

<img src="http://img.blog.csdn.net/20150518175212221?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemhhb3lhcWlhbjU1Mg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />

排序:

<img src="http://img.blog.csdn.net/20150518175244326?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemhhb3lhcWlhbjU1Mg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />


尾刪:


<img src="http://img.blog.csdn.net/20150518175438179?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemhhb3lhcWlhbjU1Mg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />

頭刪:


<img src="http://img.blog.csdn.net/20150518175509176?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemhhb3lhcWlhbjU1Mg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />

<img src="http://img.blog.csdn.net/20150518175436381?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemhhb3lhcWlhbjU1Mg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />

定位插入:

<img src="http://img.blog.csdn.net/20150518175510374?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemhhb3lhcWlhbjU1Mg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />

按值插入:

<img src="http://img.blog.csdn.net/20150518175620718?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemhhb3lhcWlhbjU1Mg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />

按位刪除:

<img src="http://img.blog.csdn.net/20150518175606721?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemhhb3lhcWlhbjU1Mg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />

尋找:

<img src="http://img.blog.csdn.net/20150518175639809?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemhhb3lhcWlhbjU1Mg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />

按值刪除:

<img src="http://img.blog.csdn.net/20150518175803195?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemhhb3lhcWlhbjU1Mg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />

求長度:

<img src="http://img.blog.csdn.net/20150518175830354?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemhhb3lhcWlhbjU1Mg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />

反轉:

<img src="http://img.blog.csdn.net/20150518175816451?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemhhb3lhcWlhbjU1Mg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />

清除:

<img src="http://img.blog.csdn.net/20150518175923160?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemhhb3lhcWlhbjU1Mg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />

退出系統:

<img src="http://img.blog.csdn.net/20150518175908446?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemhhb3lhcWlhbjU1Mg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />


【資料結構】實現順序表(c++)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.