程序填空题:入链栈和出链栈
本题目要求实现压入链栈操作和弹出链栈操作。
```c++
#include
#include
typedef int datatype;
typedef struct node
{ datatype data;
struct node *next;
}StackNode, * LinkStack;
LinkStack Push_LinkStack (LinkStack top, datatype x)
{
StackNode *s;
s=(StackNode *)malloc (sizeof (StackNode));
s->data=x;
@@[s->next=top](3);
@@[top=s](3);
return top;
}
LinkStack Pop_LinkStack (LinkStack top, datatype *x)
{
StackNode *p;
if (top==NULL) return NULL;
else
{
@@[*x = top->data](3);
p = top;
@@[top = top->next](3);
free (p);
return top;
}
}
```
答案:
第1空:s->next=top
第2空:top=s
第3空:*x = top->data
第4空:top = top->next
```c++
#include
#include
typedef int datatype;
typedef struct node
{ datatype data;
struct node *next;
}StackNode, * LinkStack;
LinkStack Push_LinkStack (LinkStack top, datatype x)
{
StackNode *s;
s=(StackNode *)malloc (sizeof (StackNode));
s->data=x;
@@[s->next=top](3);
@@[top=s](3);
return top;
}
LinkStack Pop_LinkStack (LinkStack top, datatype *x)
{
StackNode *p;
if (top==NULL) return NULL;
else
{
@@[*x = top->data](3);
p = top;
@@[top = top->next](3);
free (p);
return top;
}
}
```
答案:
第1空:s->next=top
第2空:top=s
第3空:*x = top->data
第4空:top = top->next