不想变蠢的蠢 2016-11-26 07:42 采纳率: 0%
浏览 873

c语言链栈运行时触发断点求解求解

#include
#include
#define P1
#ifdef P1
typedef struct
{
char name[50];
int age;
}DataType;

typedef struct stacknode
{
DataType data;
struct stacknode *next;
}StackNode;

typedef struct
{
StackNode *top;
}LinkStack;

StackNode *StackInit(void)
{
StackNode *p;
if (p = ((StackNode *)malloc(sizeof(StackNode))))
{
p->next = NULL;
return p;
}
return NULL;
}

void InitStack(LinkStack *s)
{
s->top = NULL;
}

int StackEmpty(LinkStack *s)
{
return s->top == NULL;
}

void Push(LinkStack *s, DataType x)
{
StackNode *p = (StackNode *)malloc(sizeof(StackNode));
InitStack(s);
p -> data = x;
p->next = s->top;
s->top = p;
}

DataType Pop(LinkStack *s)
{
DataType x;
StackNode *p = s;
if (StackEmpty(s))
{
printf("stack underflow");
}
x = p->data;
s->top = p->next;
free(p);
return x;
}

DataType StackTop(LinkStack *s)
{
if (StackEmpty(s))
{
printf("stack is empty");
}
return s->top->data;
}

int main(void)
{
StackNode *stack;
DataType data, data1;

stack = StackInit();
printf("接下来进行入栈操作!\n");
printf("按照 姓名 年龄依次输入信息:  ");
scanf("%s%d", data.name, &data.age);
Push(stack, data); printf("按照 姓名 年龄依次输入信息:  ");
scanf("%s%d", data.name, &data.age);
Push(stack, data);



printf("接下来进行出栈操作!\n");
data1 = Pop(stack);
printf("出栈操作的数据是(%s,%d)\n", data1.name, data1.age);
data1 = Pop(stack);
printf("出栈操作的数据是(%s,%d)\n", data1.name, data1.age);

system("pause");
return 0;

}
#endif

  • 写回答

1条回答 默认 最新

  • YXTS122 2016-11-26 11:24
    关注
     lude<stdio.h>
    #include<stdlib.h>
    typedef struct
    {
        char name[50];
        int age;
    }DataType;
    typedef struct stacknode
    {
        DataType data;
        struct stacknode *next;
    }StackNode;
    typedef struct
    {
        StackNode *top;
    }LinkStack;
    StackNode *StackInit(void)
    {
        StackNode *p;
        if (p = ((StackNode *)malloc(sizeof(StackNode))))
        {
            return NULL;
        }
        p->next = NULL;
        return p;
    }
    void InitStack(LinkStack *s)
    {
        s->top=(StackNode*)malloc(sizeof (StackNode));
        s->top->next=NULL;
    }
    int StackEmpty(LinkStack *s)
    {
        return s->top == NULL;
    }
    void Push(LinkStack *s, DataType x)
    {
        StackNode *p = (StackNode *)malloc(sizeof(StackNode));
        p -> data = x;
        p->next = s->top;
        s->top=p;
    }
    DataType Pop(LinkStack *s)
    {
        DataType x;
        StackNode *p = s->top;
        if (StackEmpty(s))
        {
            printf("stack underflow");
        }
        x = p->data;
        s->top = p->next;
        free(p);
        return x;
    }
    DataType StackTop(LinkStack *s)
    {
        if (StackEmpty(s))
        {
            printf("stack is empty");
        }
        return s->top->data;
    }
    int main(void)
    {
        LinkStack s;
        LinkStack *stack;
        stack=&s;
        DataType data, data1;
        InitStack(stack);
        printf("接下来进行入栈操作!\n"); 
        printf("按照姓名年龄依次输入信息: "); 
        scanf("%s%d", data.name, &data.age); 
        Push(stack, data);
        printf("按照姓名年龄依次输入信息: "); 
        scanf("%s%d", data.name, &data.age); 
        Push(stack, data); 
        printf("接下来进行出栈操作!\n"); 
        data1 = Pop(stack); 
        printf("出栈操作的数据是(%s,%d)\n", data1.name, data1.age); 
        data1 = Pop(stack); 
        printf("出栈操作的数据是(%s,%d)\n", data1.name, data1.age); 
        return 0;
    }
    
    评论

报告相同问题?

悬赏问题

  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥15 绘制多分类任务的roc曲线时只画出了一类的roc,其它的auc显示为nan
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?