数据结构——15 栈链表描述
2016-08-18 17:19
225 查看
栈——链表描述
栈——进栈、出栈、打印(链表描述)链表描述中,栈里的元素连接关系是,从上而下栈顶元素向栈底元素指针连接。
//关于数据结构中栈的操作,用一个类,实现栈的建立、入栈、出栈、删除栈的操作。
#include <iostream> using namespace std; struct node //定义一个结构体,它是栈里的元素 { int x; node* next; }; class stack { public: stack():top(NULL),size(0){} //构造函数初始化栈顶指针,栈顶指向空指针,栈里元素的大小为0 ~stack(); //析构函数删除堆栈 int pop(); //出栈 void push(int n); //进栈 private: node *top; //node节点是栈的元素 int size; //栈里元素的个数 }; stack::~stack() { node *p=top; while(p!=NULL) { p=top->next; //用top的next赋值p,使p指向新的栈顶元素 delete [] top; //删除以前的栈顶元素top,释放所指向的结点 top=p; //再用top指向栈顶元素,直到循环结束,栈内元素全部删除 } } void stack::push(int n) //进栈(压栈)操作,增加一个元素放在栈顶 { node* temp=new node; //定义一个临时指针 temp->x=n; temp->next=top; //使新结点的next指针指向栈顶(数据) top=temp; //用新增加指针更新栈顶指针 size++; //栈里元素个数加1 } int stack::pop() //出栈操作,返回栈顶元素值,并删除第一个栈顶元素 { node* temp; //定义一个临时node指针 int back; //返回值 if(size) //用size判断是否栈里还有元素 { temp=top; //使temp指向栈顶结点 back=top->x; top=top->next; //用top自身更新指针,使top指向下一个元素,即出栈以后的栈顶结点 delete []temp; //通过临时指针删除栈顶 size--; return back; } else { cout<<"栈已经为空!"<<endl; exit(0); } } int main() { stack s; for(int i=1;i<=10;i++) s.push(i); cout<<"The element of stack are: "; for(i=1;i<=20;i++) cout<<s.pop()<<" "; cout<<endl; return 0; }
相关文章推荐
- 数据结构与算法(Java描述)-5、循环链表仿真链表以及循环链表应用
- 数据结构——c语言描述 第二章(3) 双向链表
- 数据结构与算法C++描述(5)---模拟指针及模拟链表
- 数据结构——13 队列链表描述
- 数据结构——c语言描述 第二章(2) 单向链表
- 数据结构之线性表——链表的链式存储(链式描述)
- 数据结构之线性表——链表的链式存储(链式描述)
- 数据结构之线性表——链表的顺序存储(数组描述)
- 数据结构(java语言描述)链表的使用
- 数据结构之线性表——链表的顺序存储(数组描述)
- 数据结构之线性表——链表的链式存储(链式描述)注释版
- 数据结构实验之链表二:逆序建立链表
- 数据结构之链表 (C++类模板实现)
- 数据结构基础(12) --双向循环链表的设计与实现
- SQL Server 查询数据库的表结构以及描述来生成数据字典
- 数据结构实验之链表九:双向链表 C++
- 数据结构——Java实现单向链表
- 数据结构单项链表C++实现改变C版本
- 数据结构实验之链表二:逆序建立链表
- C语言 链表 数据结构实验之链表三:链表的逆置