C++ 顺序表的基本操作
来源:互联网 发布:mac客户端网游 编辑:程序博客网 时间:2024/06/06 14:20
顺序表的基本操作:
"seqlist.h"头文件
#ifndef SEQLIST_H_INCLUDED#define SEQLIST_H_INCLUDED#include <iostream>#include <stdlib.h>using namespace std;template <class Type>class SeqList{public: SeqList(size_t sz = INIT_SIZE); bool IsFull() const { return size >= capacity; } bool IsEmpty() const { return size == 0; } void show_list(); void push_back(const Type& x); void push_front(const Type& x); void pop_back(); void pop_front(); void insert_pos(int pos,const Type& x); void insert_val(const Type& x); void delete_pos(int pos); void delete_val(const Type& x); int find(const Type& x); int length() const; void clear(); void destory(); void resver(); void sort();private: enum{INIT_SIZE = 10}; Type *base; size_t capacity; size_t size;};template<class Type>SeqList<Type>::SeqList(size_t sz){capacity = sz > INIT_SIZE ? sz : INIT_SIZE;base = new Type[capacity];size = 0;}template<class Type>void SeqList<Type>::show_list(){for(int i=0; i<size; ++i){cout<<base[i]<<" ";}cout<<endl;}template<class Type>void SeqList<Type>::push_back(const Type &x){if(IsFull()){cout<<"顺序表已满,不能插入!"<<endl;return;}base[size++] = x;}template<class Type>void SeqList<Type>::push_front(const Type &x){if(IsFull()){cout<<"顺序表已满,不能插入!"<<endl;return;}for(int i=size; i>0; --i){base[i] = base[i-1];}base[0] = x;size++;}template<class Type>void SeqList<Type>::pop_back(){ if(IsEmpty()){cout<<"顺序表为空,不能删除!"<<endl;return;}size--;}template<class Type>void SeqList<Type>::pop_front(){ if(IsEmpty()){cout<<"顺序表为空,不能删除!"<<endl;return;} for(int i=0; i<size; ++i) { base[i] = base[i+1]; } size--;}template<class Type>void SeqList<Type>::insert_pos(int pos,const Type &x){if(pos<0 || pos>size){cout<<"要插入的位置非法!"<<endl;return;}if(IsFull()){cout<<"顺序表已满,不能插入!"<<endl;return;}for(int i=size; i>pos; --i){base[i] = base[i-1];}base[pos] = x;size++;}template<class Type>void SeqList<Type>::insert_val(const Type& x){ int pos = find(x); if(pos == -1) { return; }for(int i=size; i>=pos; --i){base[i+1] = base[i];}base[pos] = x;size++;}template<class Type>void SeqList<Type>::delete_pos(int pos){for(int i=pos; i<size; ++i){base[i] = base[i+1];}size--;}template<class Type>void SeqList<Type>::delete_val(const Type &x){int pos = find(x);if(pos == -1){return;} 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;}return -1;}template<class Type>int SeqList<Type>::length() const{return size;}template<class Type>void SeqList<Type>::clear(){size = 0;}template<class Type>void SeqList<Type>::destory(){delete []base;base = NULL;}template<class Type>void SeqList<Type>::resver(){for(int i=0; i<size/2; ++i){int temp =base[i];base[i] = base[size-i-1];base[size-i-1] = temp;}for(int i=0; i<size; ++i) { cout<<base[i]<<" "; }cout<<endl;}template<class Type>void SeqList<Type>::sort(){for(int j=0; j<size-1; ++j) { for(int i=0; i<size-1-j; ++i) { if(base[i]>base[i+1]) { int temp = base[i]; base[i] = base[i+1]; base[i+1] = temp; } } } for(int i=0;i<size;++i) { cout<<base[i]<<" "; }cout<<endl;}#endif // SEQLIST_H_INCLUDED主函数:
#include "SeqList.h"int main(){ SeqList<int> mylist; int select = 1; int Item; int pos; while(select) { system("CLS"); cout<<"*************************************"<<endl; cout<<"* [0]quit_system [1]show_list *"<<endl; cout<<"* [2]push_back [3]push_front *"<<endl; cout<<"* [4]pop_back [5]pop_front *"<<endl; cout<<"* [6]insert_pos [7]insert_val *"<<endl; cout<<"* [8]delete_pos [9]delete_val *"<<endl; cout<<"* [10]find [11]length *"<<endl; cout<<"* [12]clear [13]destory *"<<endl; cout<<"* [14]resver [15]sort *"<<endl; cout<<"*************************************"<<endl; cout<<"请输入你的选择:>"; cin>>select; switch(select){ case 1:mylist.show_list();system("pause");break;case 2:cout<<"请输入要插入的值(-1结束):>";while(cin>>Item, Item!=-1){mylist.push_back(Item);}break;case 3:cout<<"请输入要插入的值(-1结束):>";while(cin>>Item, Item!=-1){mylist.push_front(Item);}break;case 4: mylist.pop_back(); break; case 5: mylist.pop_front(); break;case 6:cout<<"请输入要插入的位置:>";cin>>pos;cout<<"请输入要插入的值:>";cin>>Item;mylist.insert_pos(pos,Item);break;case 7:cout<<"请输入要插入的值:>";cin>>Item;mylist.insert_val(Item);break;case 8:cout<<"请输入要删除的位置:>";cin>>pos;mylist.delete_pos(pos);break;case 9:cout<<"请输入要删除的值:>";cin>>Item;mylist.delete_val(Item);break;case 10:cout<<"请输入要查找的值:>";cin>>Item;pos = mylist.find(Item);cout<<pos<<endl;system("pause");break;case 11:pos = mylist.length();cout<<pos<<endl;system("pause");break;case 12:mylist.clear();break;case 13:mylist.destory();break;case 14:mylist.resver();system("pause");break;case 15:mylist.sort();system("pause");break;default:break; } } return 0;}
0 0
- 顺序表的基本操作(C++)
- 【C++/数据结构】顺序表的基本操作
- C语言顺序表的基本操作
- 顺序表的基本操作(C语言)
- 数据结构 (C语言)顺序表的基本操作
- c语言顺序表的实现与基本操作
- C语言实现顺序表的基本操作
- C语言实现----顺序表的基本操作(1)
- 顺序线性表的基本操作(C语言实现)
- C语言顺序栈的基本操作
- 顺序表的基本操作
- 顺序表的基本操作
- 顺序表的基本操作
- 顺序表的基本操作
- 顺序表的基本操作
- 顺序表的基本操作
- 顺序表的基本操作
- 顺序表的基本操作
- 给自己打打气!
- 中缀表达式转化为后缀表达式,计算中缀表达式,计算后缀表达式(有注释)(逆波兰表达式)
- iOS计算textField的光标偏移量
- Xcode6内置环境变量(Build Setting Macros)
- Spring framework
- C++ 顺序表的基本操作
- iOS动画——Layer Animations
- 关于系统时钟初始化函数“void Stm32_Clock_Init(u8 PLL)
- js时间格式
- js 与或运算符 || && 妙用
- inux下解压命令大全
- cocos2dx使用第三方字库.ttf,需要注意的事项
- new String() 和 String 的区别
- Java ClassLoader