| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1372 人关注过本帖
标题:有没有大神,帮忙瞅一下呀
只看楼主 加入收藏
和1683804066
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2020-4-2
结帖率:0
收藏
已结贴  问题点数:20 回复次数:3 
有没有大神,帮忙瞅一下呀

[local]1[/local]


程序代码:
#include "stdio.h"
#include "malloc.h"

#define TRUE        1
#define FALSE       0
#define OK          1 
#define ERROR       0  
#define INFEASIBLE -1
#define OVERFLOW   -2
typedef int Status;
typedef int SElemType;

typedef struct Node {
    SElemType data; //结点的数据
    struct Node *next;  //下一个结点的地址
} Node, *LinkNode;

typedef struct {
    LinkNode top;   //指向栈顶
}LinkStack;


//初始化:分配内存,初始容量LIST_INIT_SIZE,栈顶栈底的初始值相同
Status InitStack(LinkStack &s)
{
    s.top = (LinkNode)malloc(sizeof(Node));//产生头节点
    if (s.top == NULL) return ERROR;
    s.top->next = NULL;
    return OK;
}
//销毁栈:释放栈的内存
Status DestroyStack(LinkStack &s)
{
    LinkNode p, q;
    if (s.top == NULL) return ERROR;
    p = s.top->next;
    while (p != NULL)
    {
        q = p->next;
        free(p);
        p = q;
    }
    s.top = NULL;
    return OK;
}
//清空栈:使栈顶移至栈底位置
Status ClearStack(LinkStack &s)
{
    return OK;
}
//判空
Status StackEmpty(LinkStack s)
{
    if (s.top == NULL) return ERROR;
    if (s.top->next == NULL) return TRUE;
    else return FALSE;
}
int StackLength(LinkStack s)
{
    int i = 0;
    if (s.top == NULL) return ERROR;
    LinkNode p;
    p = s.top->next;
    while (p != NULL)
    {
        i++;
        p = p->next;
    }
    return i;
}
//取栈顶元素值,存入e中,栈顶不变
Status GetTop(LinkStack s, SElemType &e)
{
    if (s.top == NULL) return ERROR;
    e = s.top->next->data;
    return OK;
}
//入栈操作,若栈已满,则重新分配,并stacksize增大,栈顶改变
Status Push(LinkStack &s, SElemType e)
{
    LinkNode p;
    p = (LinkNode)malloc(sizeof(Node));
    p->data = e;
    p->next = s.top->next;
    s.top->next = p;
    return OK;
}

Status Pop(LinkStack &s, SElemType &e)
{
    if (s.top == NULL) return ERROR;
    e = s.top->next->data;
    LinkNode p;
    p = s.top->next;
    s.top->next = p->next;
    free(p);
    return OK;
}

Status StackTraverse(LinkStack s)
{
    if (s.top == NULL) { printf("栈未分配内存!n"); return ERROR; }
    if (s.top->next == NULL) { printf("栈中无数据!n"); return OK; }
    printf("栈中的数据有:");
    LinkNode p;
    p = s.top->next;
    while (p != NULL)
    {
        printf(" %d ", p->data);
        p = p->next;
    }
    printf("n");
    return OK;
}
void main()
{
    LinkStack s;
    InitStack(s);
    Push(s, 1);
    Push(s, 2);
    Push(s, 3);
    Push(s, 4);
    Push(s, 5);
    SElemType e;
    GetTop(s, e);
    printf("栈顶元素:%dn", e);
    Push(s, 115);

    int l = StackLength(s);
    printf("栈长度为:%dn", l);
    StackTraverse(s);
    Pop(s, e);
    StackTraverse(s);
    Pop(s, e);
    StackTraverse(s);

    DestroyStack(s);
}



搜索更多相关主题的帖子:  next top NULL return 
2020-04-02 20:38
吕孟伟
Rank: 8Rank: 8
等 级:贵宾
威 望:27
帖 子:200
专家分:870
注 册:2018-10-4
收藏
得分:7 
那你的问题是什么呢?

借用一下侯捷的话:勿在浮沙筑高台。
2020-04-03 21:38
自学的数学
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:46
帖 子:967
专家分:4146
注 册:2017-11-15
收藏
得分:7 
该程序可以运行,但是你想问的是什么呢?你想得到什么样的结果呢?
2020-04-04 14:24
hbccc
Rank: 5Rank: 5
等 级:职业侠客
威 望:5
帖 子:108
专家分:315
注 册:2020-2-18
收藏
得分:7 
好高深啊,学习啦
2020-04-04 16:42
快速回复:有没有大神,帮忙瞅一下呀
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.069313 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved