用c++实现 c++顺序表的实现(采用模板)
来源:互联网 发布:vivo软件招聘 编辑:程序博客网 时间:2024/04/29 20:48
函数实现数据的插入(头插&&尾插)、删除(头删&&尾删)、查找、按位置插入、按位置删除、顺序表求长、顺序表清除、顺序表摧毁、数据的逆置以及数据排序
main函数
#include"SeqList.h"//顺序表void main(){SeqList<int> mylist;int select = 1;int Item;int pos;while(select){cout<<"**************************************"<<endl;cout<<"* [1] push_back [2] push_front *"<<endl;cout<<"* [3] show_list [0] quit_system*"<<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]destroy *"<<endl;cout<<"* [14] reserv [15]sort *"<<endl;cout<<"**************************************"<<endl;cout<<"请选择:>";cin>>select;switch(select){case 0:mylist.quit_system();break;case 1:cout<<"请输入要插入的值(-1结束):>";while(cin>>Item, Item!=-1){mylist.push_back(Item);}break;case 2:cout<<"请输入要插入的值(-1结束):>";while(cin>>Item, Item!=-1){mylist.push_front(Item);}break;case 3:mylist.show_list();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); 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;int pos;pos = mylist.find(Item);break; case 11: mylist.length(); break; case 12: mylist.clear(); break; case 13: mylist.destroy(); break; case 14: mylist.reserv(); break; case 15: mylist.sort();default:break;}}}
SeqList.h函数
#pragma once#include<iostream>using namespace std;template<class Type>class SeqList{public:SeqList(size_t sz=INIT_SIZE);public:bool isfull()const{return size>=capacity;}bool isempty()const{return size==0;}public:void quit_system();void push_back(const Type &x);void push_front(const Type &x);void show_list();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 &key);int length()const;void clear();void destroy();void reserv();void sort();private:enum{INIT_SIZE=8};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>::quit_system()//退出{return;}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>::show_list()//显示{for(int i=0; i<size; ++i){cout<<base[i]<<" ";}cout<<endl;}template<class Type>void SeqList<Type>::pop_back()//后删{ size = size-1;}template<class Type>void SeqList<Type>::pop_front()//前删{ int i; for(i = 0;i<size-1;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; pos = find(x); insert_pos(pos,x);}template<class Type>void SeqList<Type>::delete_pos(int pos)//按位置删除{ int i; for(i = pos;i<size-1;++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 &key)//查找{for(int i=0; i<size; ++i){if(base[i] == key)return i;}return -1;}template<class Type>int SeqList<Type>::length()const//求长{ cout<<size<<endl;return size;}template<class Type>void SeqList<Type>::clear()//清除数据{ while(size) { base[size--] = NULL; }}template<class Type>void SeqList<Type>::destroy()//摧毁顺序表{ int i; delete base; base = NULL; capacity = 0; size = 0;}template<class Type>void SeqList<Type>::reserv()//逆序{ int i = 0;int m=size-1;int x=size; for(;i<=(m/2);++i) { int tmp = base[i]; base[i] = base[x-1]; base[x-1] = tmp;x--; }}template<class Type>void SeqList<Type>::sort()//排序{int tmp;for (int i=0;i<=size;i++)for (int j=i+1;j<=size-1;j++){if(base[i]>base[j]){tmp = base[j];base[j]=base[i];base[i]=tmp;}}}
1 0
- C++顺序表的实现(采用模板)
- C++顺序表的实现(采用模板)
- 【C++】用模板实现顺序表
- 【C++】用模板实现顺序表Vector
- [数据结构] 顺序表的实现(c++/类模板)
- 用c++实现 c++顺序表的实现(采用模板)
- c++(模板类)实现顺序表
- 顺序表的C实现
- 【C++】顺序表的实现
- 【C++】顺序表的实现
- 顺序表的实现(C语言)
- 顺序表的实现(C语言版)
- 顺序表的实现(C语言)
- 顺序表的实现(C++)
- 数据结构(C++)-用顺序结构实现的栈模板类
- 顺序表(C实现)
- 【C++】实现顺序表
- 【c++】实现顺序表
- python爬虫第一课,制作搜索引擎
- Hiho 国庆出游
- Android应用Context详解及源码解析
- Uncaught TypeError: undefined is not a function
- 各种距离算法汇总
- 用c++实现 c++顺序表的实现(采用模板)
- linux下清空文件内容方法
- html输入构输入验证码达到一定位数触发事件及回车时触发事件
- 用Windows自带的画笔工具调整图片的大小
- 开发技术前线 第十一期
- linux计划任务 Crontab
- 为什么要优先使用组合 而不是继承?
- 编辑距离 python
- Android-BLE 2. 蓝牙的权限使用