链栈(C++实现)

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstdlib>
 4 using namespace std;
 5 typedef struct Stack{
 6     struct Stack *next;
 7     int data;
 8 }*LinkedStack,Node;
 9 void LinkedStack_Empty(LinkedStack &top){
10     top = (Node*)malloc(sizeof(Node));
11     if(top == NULL){
12         cout<<"申请空间失败"<<endl;
13         return ; 
14     }
15     top->next = NULL;
16     cout<<"创建空栈成功(带头节点)!"<<endl; 
17 }
18 //判断栈是否为空
19 bool isEmpty(LinkedStack top){
20     return top->next == NULL;
21 }
22 //入栈
23 void push(LinkedStack &top,int num){
24     Node *new_Node = (Node*)malloc(sizeof(Node));
25     if(new_Node == NULL){
26         return ;
27     }
28     new_Node->data = num;
29     new_Node->next = top->next;
30     top->next = new_Node;
31 } 
32 //出栈
33 void pop(LinkedStack &top){
34     if(isEmpty(top) == true){
35         cout<<"出栈失败,为空栈"<<endl;
36         return ; 
37     }
38     Node *del = top->next;
39     top->next = del->next;
40     free(del);
41 } 
42 void display(LinkedStack top){
43     if(isEmpty(top)==true){
44         cout<<"空栈"<<endl;
45     }
46     else{
47         Node *temp = top;
48         temp = temp->next;
49         while(temp != NULL){
50             cout<<temp->data<<" ";
51             temp = temp->next;
52         }    
53     }
54     cout<<endl;
55 }
56 int main(){
57     LinkedStack stack;
58     LinkedStack_Empty(stack);
59     for(int i = 1;i<=10;i++){
60         push(stack,i);
61     }
62     display(stack);
63     for(int i = 1;i<=10;i++){
64         pop(stack);
65         display(stack);
66     }
67     return 0;
68 }

 

上一篇:链式栈的实现(头文件及源程序)


下一篇:3,Python常用库之三:Matplotlib