为了账号安全,请及时绑定邮箱和手机立即绑定

这里StackNode *s如果换成LinkStack *s 会有什么错误吗?

这里StackNode *s如果换成LinkStack *s 会有什么错误吗?

回首忆惘然 2022-08-05 18:11:44
typedef struct node{datetype date;struct node *next;}StackNode *LinkStack下面是入栈操作:LinkStack Push_LinkStack(LinkStack top,datetype x){StackNode *s;s=malloc(sizeof(StackNode));s->date=x;【s->next=top;top=s;】return top;}我只有一个问题。就是在我加【】的地方,前面s->next=top的意思是把名为LinkStack的指向node结构体的指针top内的地址赋给同样指向名为StackNode指向node结构体的next指针,这样top内为空即无地址,接下来又把指向StackNode的s指针内地址赋给top,这样top就又指向了名为StackNode的node结构体。这样最后就返回了一个名为StackNode的node结构体,但是函数本身是应该返回名为LinkNode的node结构体的啊?怎么回事?函数中的返回值跟函数本身应该返回的值是不一致的呢??
查看完整描述

2 回答

?
慕丝7291255

TA贡献1859条经验 获得超6个赞

StackNode 和*LinkStack是同一个东西都是struct node型结构体
typedef struct node
{
datetype date;
struct node *next;
}StackNode ,*LinkStack
上面typedef给struct node又取了两个名字,StackNode 和*LinkStack,一个人可以有好几个名字、名字变了人没变,懂了没?

查看完整回答
反对 回复 2022-08-08
?
青春有我

TA贡献1784条经验 获得超8个赞

这个是为了增加程序的可读性,比如LinkStack一看就是一个链栈,如果你用struct node定义,别人在看的时候还要返回看一下你这个struct node是什么东西,这个程序比较短,这种好处不是特别明显,如果你读一个几十甚至几百行的程序就会感觉到这种方法的好处了

查看完整回答
反对 回复 2022-08-08
  • 2 回答
  • 0 关注
  • 507 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信