数据结构-链栈

 1 #include <iostream>
 2 #include <stdlib.h>
 3 using namespace std;
 4 
 5 typedef struct LNode
 6 {
 7     int data;
 8     struct LNode *next;
 9 }LNode;//栈结点定义
10 
11 void InitStack(LNode *&S)
12 {
13     S=(LNode*)malloc(sizeof(LNode));
14     S->next=NULL;
15 }
16 
17 int IsEmpty(LNode *S)
18 {
19     if(S->next==NULL)
20         return 1;
21     else
22         return 0;
23 }
24 
25 void Push(LNode *&S,int e)
26 {
27     LNode *p;
28     p=(LNode*)malloc(sizeof(LNode));
29     p->next=NULL;
30     p->data=e;
31 
32     p->next=S->next;
33     S->next=p;
34 }
35 
36 int Pop(LNode *&S,int &e)
37 {
38     LNode *p;
39     if(S->next==NULL)
40         return 0;
41 
42     p=S->next;
43     e=p->data;
44     S->next=p->next;
45     free(p);
46     return 1;
47 }
48 
49 void Print(LNode *S)
50 {
51     if(S->next==NULL)
52     {
53         cout<<"链栈为空! "<<endl;
54         return;
55     }
56     LNode *p;
57     p=S->next;
58     cout<<"\n链栈中的元素为(栈顶->栈底):\n";
59     while(p!=NULL)
60     {
61         cout<<"  "<<p->data<<"  ";
62         p=p->next;
63     }
64     return;
65 }
66 
67 int main()
68 {
69     int i,e;
70     LNode *S;
71     InitStack(S);
72     for(i=0;i<10;++i)
73         Push(S,i);
74     Print(S);
75 
76 
77     cout<<"\n\n依次出栈的四个元素为:\n";
78     for(i=0;i<4;++i)
79     {
80         Pop(S,e);
81         cout<<"  "<<e<<"  ";
82     }
83     //cout<<"\n\n";
84     Print(S);
85     if(IsEmpty(S)==1)
86         cout<<"\n此时,链栈为空!\n";
87     else
88         cout<<"\n此时,链栈非空!\n";
89 
90     return 0;
91 }

 

转载于:https://www.cnblogs.com/Xbert/p/5087755.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值