C+顺序表
来源:互联网 发布:人声消音软件 编辑:程序博客网 时间:2024/06/03 21:31
C++顺序表模板实现
1、数组实现:
#include "iostream"using namespace std;template<class Elem>class AList{private:int maxSize;int listSize;int fence;Elem *Array;public:AList(int size){maxSize=size;listSize=fence=0;Array=new Elem[maxSize];}~AList(){delete[] Array;}void clear(){delete[] Array;listSize=fence=0;Array=new Elem[maxSize];}bool insert(const Elem it){if(listSize==maxSize) return false;for(int i=listSize;i>fence;i--){Array[i]=Array[i-1];}Array[fence]=it;listSize++;return true;}bool append(const Elem it){if(listSize==maxSize) return false;Array[listSize++]=it;return true;}bool remove(Elem& it){if(rightLenght()==0) return false;it=Array[fence];for(int i=fence;i<listSize-1;i++){Array[i]=Array[i+1];}listSize--;return true;}void setStart(){fence=0;}void setEnd(){fence=listSize;}void prev(){if(fence!=0) fence--;}void next(){if(fence<=listSize) fence++;}int leftLenght(){return fence;}int rightLenght(){return listSize-fence;}void print(){int temp=0;cout <<"<";while(temp<fence&&fence)cout <<Array[temp++]<<" ";cout <<"|";while(temp<listSize)cout <<Array[temp++]<<" ";cout <<">"<<endl;}};int main(int argc, char* argv[]){AList<int> aList(10);aList.insert(4);aList.insert(3);aList.print();aList.next();aList.print();int i;aList.append(8);aList.print();aList.remove(i);cout <<i<<endl;aList.print();return 0;}
2、链表实现
#include "iostream"using namespace std;template<class Elem> class Link { public:Elem element; // Elem value for this node Link *next; // Pointer to next node in list Link(const Elem elemval, Link* nextval =NULL) { element = elemval; next = nextval;} Link(Link* nextval =NULL) { next = nextval; } };template<class Elem>class Stack{public:virtual void clear()=0;virtual bool push(const Elem& item)=0;virtual bool pop(Elem& item)=0;virtual bool topValue(Elem& item)=0;virtual void print()=0;virtual int lenght()const=0;};template<class Elem>class LStack:public Stack<Elem>{private:int size;Link<Elem>* top;public:LStack(){ size=0;top=NULL;}void clear(){while(top!=NULL){Link<Elem>* temp=top;top=top->next;delete temp;}}int lenght()const{return size;}bool pop(Elem& item){if(size==0) return false;item=top->element;Link<Elem>* temp=top->next;delete top;top=temp;size--;return true;}bool push(const Elem& item){top=new Link<Elem>(item,top);size++;return true;}bool topValue(Elem& item){if(size==0) return false;item=top->element;return true;}void print(){Link<Elem>* temp=top;while(temp!=NULL){cout <<temp->element<<" ";temp=temp->next;}cout <<endl;}};int main(int argc, char* argv[]){LStack<int> lStack;Stack<int> *stack,&s = lStack;stack = &lStack;stack->push(2);s.push(5);lStack.push(1);lStack.print();int it;lStack.pop(it);cout <<it<<endl;lStack.print();lStack.topValue(it);cout <<it<<endl;return 0;}
0 0
- 顺序表(C++)
- C+顺序表
- 线性顺序表C
- C-回文[顺序表]
- 【C++】实现顺序表
- 【C语言】顺序表
- 【C++】顺序表
- 顺序表C版
- 【c++】顺序表
- 顺序表 - C语言
- C语言:顺序表
- C语言顺序表
- C语言顺序表
- 【c++】实现顺序表
- 顺序表(c/c++)
- 【顺序表】 c语言的顺序表
- C语言实现顺序表
- 数据结构---顺序表c实现
- maven jbpm4.4.jar 在hibernate配置文件中放置方法
- VS2008提示无法打开包括文件:“afxcontrolbars.h”解决办法
- AWS云平台的服务概览(上):基础服务
- 一张回家的火车票
- 关于"symbol lookup error xxxxx , undefined symbol"问题的解决方式
- C+顺序表
- rails 安全
- AJAX工作原理
- 《UNIX环境高级编程》笔记--线程属性
- Robotium API 翻译(一)——click/clickLong操作
- jbpm4.4 hibernate4 的兼容整合
- java常见异常总结
- delphi reintroduce作用
- linux spi子系统 .