链栈的实现

实验4:栈和队列的基本操作实现及其应用

一、实验目的

1、 熟练掌栈和队列的结构特点,掌握栈和队列的顺序存储和链式存储结构和实现。

2、 学会使用栈和队列解决实际问题。

二、实验内容

1、 自己确定结点的具体数据类型和问题规模:

分别建立一个顺序栈和链栈,实现栈的压栈和出栈操作。

分别建立一个顺序队列和链队列,实现队列的入队和出队操作。

2、 设计算法并写出代码,实现一个十将二进制转换成2进制数。


链栈的实现:

#include
   
   
    
    
using namespace std;

struct Node{
	   int data;
	   Node * next;
	   };
	   
class LinkStack{
	public:
		LinkStack(){top=NULL;}   //构造函数,初始化一个空栈  
		~LinkStack(); 
		void Push(int x);        //入栈操作,将元素X入栈 
		int Pop();               //出栈操作,将栈顶元素出栈 
		int GetTop(){if(top!=NULL)return top->data;}   //取栈顶元素(并不删除) 
		int Empty(){if(top==NULL) return 1;else return 0;}   //   判空操作,判断链栈是否为空栈 
	private:
		Node * top;    //栈顶指针即链栈的头指针 
}; 

LinkStack::~LinkStack()
{
	Node *q;
	while(top!=NULL)
	{
	  q=top;
	  top=top->next;
	  delete q;
		
	}
}

void  LinkStack::Push(int x)
{
	Node *s; 
	s=new Node;s->data=x;
	s->next=top;top=s;
}

int LinkStack::Pop()
{
	int x;
	Node *p;
	if(top==NULL)throw"下溢";
	x=top->data;p=top;
	top=top->next;
	delete p;
	return x;
}

int main()
{   
  int x,n,d,flag,tab;
  LinkStack S; 
  flag=0;
	do{
		cout<<"输入你要的插入的数:"<
    
    
     
     >n;
		
		cout<<"是否继续插入(1/0)"<
     
     
      
      >d;
		S.Push(n);
	}
	while(d);
	cout<
      
      
       
       <<"**********链栈的实现**********"<
       
       
         < 
        
          >tab; switch(tab) { case 1:{ cout< 
         
           <<"输入你要的插入的数:"< 
          
            >x; S.Push(x); break; } case 2: { cout< 
           
             <<"删除的数是 :"< 
             
            
           
          
         
       
      
      
     
     
    
    
   
   

执行结果截图:


  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值