栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

数据结构-链栈的基本操作

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

数据结构-链栈的基本操作

代码在清空栈方面有一点问题,在清空之后仍然可以输出之前的数据。

#include
#include
#include
#include
#include
using namespace std;
#define Status int
#define SElemType int


typedef struct StackNode
{
    SElemType data;
    struct StackNode *next;
}StackNode,*linkStack;

//初始化
Status InitStack(linkStack &S)
{
 S = NULL;
 return 1;
}

//入栈
Status Push(linkStack &S,SElemType e)
{
    StackNode *p;
    p=new StackNode;
    p->data=e;      
    p->next=S;      
    S=p;
    return 1;
}

//出栈
bool Pop(linkStack &S,SElemType &e)
{
    linkStack p;
    if(S==NULL){
        printf("栈已空!");
        return 0;}
    e=S->data;
    p=S;
    S=S->next;
    free(p);
    return 1;
}

//取栈顶
bool GetTop(linkStack &S,SElemType &e)
{
    if(S==NULL){
        printf("栈已空!");
        return 0;}
    e=S->data;
    return 1;
}

//遍历输出
int print(linkStack S){
    int e;
    if(S==NULL){
        printf("栈已空!");
        return 0;}
    printf("从栈顶向栈底输出:");
    while (S!=NULL){
        e=S->data;
        printf("%d ",e);
        S=S->next;
    }
    printf("n");
    return 1;
}

//清空栈
void setnull(linkStack S){
    S=NULL;
    print(S);
}


int main()
{
 linkStack S;
 int a,b,c,d,e,f;
    while(1){
        printf("1.初始化 2.入栈 3.出栈 4.取栈顶 5.输出 6.清空栈  7.结束n");
        printf("请输入选择的操作:n");
        scanf("%d",&a);
        if(a==7) break;
        switch(a)
        {
        case 1:{
            InitStack(S);
            printf("初始化成功!");
            break;}
        case 2:{
            printf("请输入入栈元素个数:n");
            scanf("%d",&b);
            printf("请输入元素的值:");
            for(int i=0;i 


 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/779132.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号