链栈的简单问题 求解
开始已经解决了InitLinkStack中top的有效操作但是我还有一个问题 就是既然我对top的操作无效
那以同样的方式 为什么对Push和Pop的操作有效
#include <stdio.h>
#include <stdlib.h>
typedef int StackElemType;
typedef struct node
{
StackElemType data;
struct node *next;
}LinkStackNode;
typedef LinkStackNode *LinkStack;
void InitLinkStack(LinkStack* top);
void Push(LinkStack top,StackElemType x);
int Pop(LinkStack top);
int main()
{
LinkStack top;
InitLinkStack(&top);
int i;
for(i=0;i<10;i++)
Push(top,i*10);
for(i=0;i<10;i++)
printf("%d ",Pop(top));
//printf(" ");//这里的空格不管用
return 0;
}
void InitLinkStack(LinkStack* top)
{
*top=(LinkStack)malloc(sizeof(LinkStack));
(*top)->next=NULL;
}
void Push(LinkStack top,StackElemType x)
{
LinkStackNode *p;
p=(LinkStackNode*)malloc(sizeof(LinkStackNode));
p->data=x;
p->next=top->next;
top->next=p;
}
int Pop(LinkStack top)
{
if(top->next==NULL)
{
printf("表为空\n");
return 0;
}
int a;
LinkStackNode *temp;
temp=top->next;
top->next=temp->next;
a=temp->data;
free(temp);
return a;
}