数据结构——15 栈链表描述
Posted langtaol
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构——15 栈链表描述相关的知识,希望对你有一定的参考价值。
栈——链表描述
链表描述中,栈里的元素连接关系是,从上而下栈顶元素向栈底元素指针连接。
//关于数据结构中栈的操作,用一个类,实现栈的建立、入栈、出栈、删除栈的操作。
#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;
以上是关于数据结构——15 栈链表描述的主要内容,如果未能解决你的问题,请参考以下文章