数据结构学习【栈 链式结构 C++】链栈实现

数据结构学习【栈 链式结构 C++】


本次实现的是栈的链式存储结构——链栈。
默认采用头结点。

#include <iostream>
using namespace std;
// ADT
// InitStack(&S) //初始化栈
// DestroyStack(&S) //销毁栈

// Push(&S,x) //进栈
// Pop(&S,&x) //出栈 弹出栈顶元素
// GetTop(S,&x) //读栈顶元素 不改变栈

// IsEmpty(S);//判断栈是否为空
// PrintStack(S);//顺序输出栈
typedef struct LinkNode{
    
    
    int data;
    struct LinkNode *next;   
}LinkNode,*LinkStack;

// Code
//初始化栈
bool InitStack(LinkStack &S){
    
    
    S=(LinkNode*)malloc(sizeof(LinkNode));
    if(S==nullptr)//假设内存不足,返回false
        return false;
    S->next=nullptr;
    return true;
}
//销毁栈
void DestroyStack(LinkStack &S){
    
    
    LinkNode* p;
    while(S){
    
    
        p=S;
        S=S->next;
        free(p);
    }
}

//进栈  链栈一般不存在栈满情况
bool Push(LinkStack &S,int x){
    
    
    LinkNode* p=(LinkNode*)malloc(sizeof(LinkNode));
    p->data=x;
    p->next=S->next;
    S->next=p;
    return true;
    
} 
//出栈 弹出栈顶元素
bool Pop(LinkStack &S,int &x){
    
    
    if(S->next==nullptr)//判断是否栈空
        return false;
    LinkNode* p=S->next;//获得栈顶元素指针
    x=p->data;
    S->next=p->next;
    free(p);
    return true;
} 
//读栈顶元素 不改变栈
bool GetTop(LinkStack S,int &x){
    
    
    if(S->next==nullptr)//判断是否栈空
        return false;
    x=S->next->data;
    return true;
} 
//判断栈是否为空
bool IsEmpty(LinkStack S){
    
    
    if(S->next==nullptr)//判断是否栈空
        return false;
    else
        return false;
}
//顺序输出栈
void PrintStack(LinkStack S){
    
    
    printf("栈内元素(从栈顶开始):");
    LinkStack p=S->next;
    while(p!=nullptr){
    
    
        printf("%2d,",p->data);
        p=p->next;
    }
    printf("\n");
}
int main(){
    
    
    LinkStack S;
    //创建栈并push元素
    InitStack(S);
    Push(S,1);
    Push(S,2);
    Push(S,3);
    Push(S,4);
    Push(S,5);
    PrintStack(S);
    //pop一个元素
    int x=-1;
    Pop(S,x);
    printf("弹出栈顶元素:%d\n",x);
    PrintStack(S);
    //获得栈顶元素
    GetTop(S,x);
    printf("栈顶元素为:%d\n",x);
    PrintStack(S);
    system("pause");
}

结果如图
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/toro180/article/details/122413596