链栈的基本操作

#include<iostream>
using namespace std;
typedef struct Node{
 int data;
 struct Node *next;
}LinkstackNode, *Linkstack;
void Init(LinkstackNode *S)
{
 S = new LinkstackNode;
 S->next = NULL;
}
bool Push(Linkstack S, int x)
{//头插法
 LinkstackNode *t;
 t = new LinkstackNode;
 if(t == NULL)
  return false;
 t->data = x;
 t->next = S->next;
 S->next = t;
 return true;
}
bool Pop(Linkstack S, int *x)
{
 LinkstackNode *t;
 t = S->next;//指向栈顶元素
 if(t == NULL)//栈为空
  return false;
 S->next = t->next;//跳过一个栈中元素
 *x = t->data;
 free(t);
 return true;
}
void outs(LinkstackNode S)
{
 int x;
 while(S.next != NULL)
 { 
  Pop(&S, &x);
  cout << x <<" ";
 }
}
int main()
{
 LinkstackNode S;
 Init(&S);
 int a;
 cin >> a;
 while(a != -1)
 {
  Push(&S,a);
  cin >> a;
 }
 outs(S);
 return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值