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 關注
- 548 瀏覽
添加回答
舉報
0/150
提交
取消