数据结构——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 栈链表描述的主要内容,如果未能解决你的问题,请参考以下文章

第二章最基本的数据结构——队列栈链表

栈链表等初始化的思考

数据结构

数据结构于算法总览

顺序栈链栈双端栈

[NEFU 数据结构]阶段一复习