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,一个人可以有好几个名字、名字变了人没变,懂了没?
青春有我
TA贡献1784条经验 获得超8个赞
这个是为了增加程序的可读性,比如LinkStack一看就是一个链栈,如果你用struct node定义,别人在看的时候还要返回看一下你这个struct node是什么东西,这个程序比较短,这种好处不是特别明显,如果你读一个几十甚至几百行的程序就会感觉到这种方法的好处了
- 2 回答
- 0 关注
- 507 浏览
添加回答
举报
0/150
提交
取消