BEI-TIAN-XUAN 2021-02-23 18:03 采纳率: 66.7%
浏览 223
已采纳

C语言链栈,栈顶元素返回问题

求求各位大佬了,为什么a返回的是地址啊!

#include<stdio.h>
#include<stdlib.h>
typedef int Status;
typedef int ElemType;
#define TRUE 1;
#define ERROR 0;
typedef struct Node
{
	ElemType data;
	struct Node* next;
}StackNode,*StackList;
Status InitStack(StackList S);    //初始化(无头结点)
Status Push(StackList S, ElemType e);  //头插法
Status Pop(StackList S, ElemType* a);   //弹出
int main()
{
	int n;
	ElemType e, a;
	StackList S;
	S = (StackList)malloc(sizeof(StackNode));
	if (InitStack(S) == 1)
	{
		printf("恭喜!构建空链栈成功!\n");
	}
	printf("请输入插入元素个数:");
	scanf("%d", &n);
	printf("请输入插入栈的元素:");
	for (int i = 0; i < n; i++)
	{
		scanf("%d", &e);
		Push(S, e);
	}
		printf("恭喜你!插入成功!\n");  
	if (Pop(S, &a) == 1)
	{
		printf("恭喜你!出栈成功!\n");
		printf("删除栈顶元素:%d\n", a);
	}

	return 0;
}
Status InitStack(StackList S)
{
	S = NULL;

	return TRUE;
}
Status Push(StackList S, ElemType e)
{
	StackList P;
	P = (StackList)malloc(sizeof(StackNode));
	P->data = e;
	P->next = S->next;
	S = P; //修改栈定指针

	return TRUE;
}
Status Pop(StackList S, ElemType *a)
{
	StackList P;
	P = S;
	if (P == NULL)
		return ERROR;
	*a = S->data;
	S = S->next;
	free(P);
	
	return TRUE;
}
  • 写回答

3条回答 默认 最新

  • 都怪年少太轻狂づ 2021-02-24 13:36
    关注

    Push阶段有问题,这个相当于链表中的头插法,我在你的基础上改了一下,你注意单步调试

    Status Push(StackList S, ElemType e)
    {
    	StackList P;
    	P = (StackList)malloc(sizeof(StackNode));
    	P->data = e;
    	P->next = S->next;
    	S->next = P; //修改栈定指针
    	return TRUE;
    }

    Pop阶段相当链表中删除第一个结点,这是我在你基础上改的

     

    Status Pop(StackList S, ElemType* a)
    {
    	StackList P;
    	P = S->next;
    	if (S == NULL)
    		return ERROR;
    	S->next = P->next;
    	*a = P->data;
    	free(P);
    	return TRUE;
    }

    这是运行的截图

     

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥30 STM32 INMP441无法读取数据
  • ¥100 求汇川机器人IRCB300控制器和示教器同版本升级固件文件升级包
  • ¥15 用visualstudio2022创建vue项目后无法启动
  • ¥15 x趋于0时tanx-sinx极限可以拆开算吗
  • ¥500 把面具戴到人脸上,请大家贡献智慧
  • ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。
  • ¥15 各位 帮我看看如何写代码,打出来的图形要和如下图呈现的一样,急
  • ¥30 c#打开word开启修订并实时显示批注
  • ¥15 如何解决ldsc的这条报错/index error
  • ¥15 VS2022+WDK驱动开发环境