C++--顺序表与单链表实现
来源:互联网 发布:手机版淘宝的新品上架 编辑:程序博客网 时间:2024/06/11 06:04
大一时候写的东西, 基础东西就不讲解思路了
#include <iostream>#include <cmath>#include <iomanip>#include <cstring>#include <cstdio>#include <cstdlib>using namespace std;int MAXSIZE=100;template<class T>class sqlist{public: T a[100]; int len; void input(){ int b; cout<<"输入元素个数N"<<endl; cin>>b; len=b; cout<<"输入元素"<<endl; for(int k=0;k<len;k++) { cin>>a[k]; } cout<<endl; } void output( ) { cout<<"现在表中元素有:"; for(int i=0;i<len;i++) { cout<<a[i]<<" "; } cout<<endl; } void insert( T x,int i) //将X插入到第I个位置 { if(len>=MAXSIZE) cout<<"表已满"<<endl; else if((i<1)||(i>len+1)) cout<<"插入位置有误"<<endl; else { cout<<"将"<<x<<"插入到第"<<i<<"个位置"<<endl; for(int j = len;j>=i;j--) { a[j+1]=a[j]; } a[i]=x; len++; } } void deleteX( int i) //删除第I个位置 { if((i<0)||(i>len)) cout<<"输入位置有误"<<endl; else { for(int j = i;j<len-1;j++) { a[j]=a[j+1]; } len--; } } bool empty( ){ if(len==0) return true; else return false; }};template<class T1>struct node{ T1 data; node *next; node(); node(T1,node<T1> *link=NULL);};template<class T2>class nodelist{protected: int count; node<T2> *set_position(int position)const { node<T2> *q=head; for(int i =0;i<position;i++) q=q->next; return q; } node<T2> *head;public:// ~nodelist();// nodelist(const nodelist<T2> ©); void operator=(const nodelist<T2> ©); void output() { if(count==0) cout<<"表空"<<endl; else { cout<<"现在表中有:"<<endl; for(int i =0; i<count;i++ ){ cout<<set_position(i)->data<<" "; } cout<<endl; } } void insert(int position,const T2 &x) { if(position<0||position>count) cout<<"位置有误"<<endl; else { node<T2> *new_node,*previous,*following; previous=NULL; if(position>0){ previous = set_position(position-1); following=previous->next; } else following=head; new_node=new node<T2>(x,following); if(position==0) head=new_node; else previous->next=new_node; count++; } } void deletex(int position) { if(position<0||position>count) cout<<"输入位置有误"<<endl; else if(position!=count) { node<T2> *mp; mp=set_position(position); set_position(position-1)->next=set_position(position+1); delete mp; count--; } else if(position==count) { node<T2> *now; now=set_position(position); set_position(position-1)->next=NULL; delete now; count--; } }};void menu(){ cout<<"输入一个数字选择功能"<<endl; cout<<"1.建表 "; cout<<"2.显示 "; cout<<"3.插入 "; cout<<"4.删除 "; cout<<"9.退出"<<endl;}void menu1(){ cout<<"输入0选择顺序存储结构"<<endl; cout<<"输入1选择链接存储结构"<<endl; cout<<"输入9选择退出程序"<<endl;}int main(){ int N; bool falg = true; while(falg){ cin>>N; switch(N) { menu1(); case 0: { bool fa1=true; sqlist<int> l; menu(); int n; while(fa1){ cin>>n; switch(n) { case 1: { l.input(); cout<<"继续输入数字选择"<<endl; break; } case 2: { if(l.empty()) cout<<"表空"<<endl; else l.output(); cout<<"继续输入数字选择"<<endl; break; } case 3: { int x,i; cout<<"输入元素X"<<endl; cin>>x; cout<<"输入插入位置i"<<endl; cin>>i; l.insert(i,x); l.output(); cout<<"继续输入数字选择"<<endl; break; } case 4: { int i; cout<<"输入i,删除第i个位置元素"<<endl; cin>>i; l.deleteX(i); l.output(); cout<<"继续输入数字选择"<<endl; break; } case 9: { fa1=false; cout<<"该表操作结束"<<endl; break; } default: { cout<<"输入错误,请重新输入"<<endl; break; } } } break; } case 1: { bool fa2=true; nodelist<int > l1; menu(); int n; while(fa2){ cin>>n; switch(n) { case 1: { int x; cout<<"输入第0个元素X"<<endl; cin>>x; l1.insert(0,x); cout<<"继续输入数字选择"<<endl; break; } case 2: { l1.output(); cout<<"继续输入数字选择"<<endl; break; } case 3: { int x,i; cout<<"输入元素X"<<endl; cin>>x; cout<<"输入插入位置i"<<endl; cin>>i; l1.insert(i,x); l1.output(); cout<<"继续输入数字选择"<<endl; break; } case 4: { int i; cout<<"输入i,删除第i个位置元素"<<endl; cin>>i; l1.deletex(i); l1.output(); cout<<"继续输入数字选择"<<endl; break; } case 9: { fa2=false; cout<<"该表操作结束"<<endl; break; } default: { cout<<"输入错误,请重新输入"<<endl; break; } } } break; } case 9: { falg=false; break; } default: { cout<<"输入数据有错误,非0非1"<<endl; cout<<"请重新输入0或者1"<<endl; break; } }}}
0 0
- C++--顺序表与单链表实现
- 【C++】实现顺序表
- 【c++】实现顺序表
- c/c++实现顺序表和单链表
- [C++]实现顺序表和单链表
- 数据结构(C语言版) 线性表顺序表示与实现
- c语言顺序表的实现与基本操作
- 静态与动态顺序表操作的C语言实现
- 用c语言实现顺序表与单链表的部分操作
- 数据结构-----顺序表与单链表的实现
- C++简单实现顺序表与单链表
- C语言实现顺序表
- 数据结构---顺序表c实现
- 顺序表c语言实现
- 顺序表的C实现
- c语言实现顺序表
- 顺序表实现-c
- 【C++】顺序表的实现
- js事件冒泡
- 一天内学会的计算机技能
- PHP框架之CI:CodeIgniter
- Easy-7
- 《疯狂JAVA讲义》之十——Java基本数据类型之一
- C++--顺序表与单链表实现
- sqlyog连接虚拟机ubuntu14.04的mysql server配置
- Linux下快速配置SSH免密码登录
- HDOJ 2007平方和与立方和
- 文章标题
- AngularJs路由
- Struts2 java.io.FileNotFoundException
- redis 集群搭建过程及搭建问题处理
- Coursera吴恩达机器学习课程 总结笔记及作业代码——第4周神经网络