源程序:
#include <stdio.h>
#include <stdlib.h>
typedef struct stack_link
{
int data;
stack_link *next;
}Stack, *HStack;
void create_node(HStack *new_node)
{
*new_node = (HStack)malloc(sizeof(Stack));
}
void Push(HStack Head, int x) //进栈
{
HStack P, Q;
create_node(&P);
P->data = x;
Q = Head;
while (Q->next != NULL)
{
Q = Q->next;
}
Q->next = P;
P->next = NULL;
printf("进栈成功!\n");
}
void Pop(HStack Head) //出栈
{
if ((Head)->next == NULL)
{
printf("栈已空!\n");
}
HStack P, Q;
P = Head;
Q = (Head)->next;
while ((Q)->next != NULL)
{
P = Q;
Q = (Q)->next;
}
(P)->next = NULL;
printf("出栈成功!\n");
}
void Display(HStack Head) //遍历
{
HStack P;
P = Head;
printf("栈从栈底到栈顶显示如下:\n");
if (P->next == NULL)
{
printf("栈已空!\n");
}
while (P->next != NULL)
{
P = P->next;
printf("%d\n", P->data);
}
}
int main()
{
HStack H;
create_node(&H);
(H)->next = NULL;
int mark = 1;
int x;
while (mark == 1)
{
int temp;
printf("按1进栈,按2出栈,按3显示栈,按0退出!\n");
scanf(" %d", &temp);
switch (temp)
{
case 1:
printf("\n");
scanf(" %d", &x);
Push(H, x);
break;
case 2:
printf("\n");
Pop(H);
break;
case 3:
printf("\n");
Display(H);
break;
case 0:
printf("\n");
mark = 0;
break;
}
}
}
注:如果C编译器报错请使用C++编译器,因为有的C编译器不支持
typedef struct stack_link
{
int data;
stack_link *next;
}Stack, *HStack;
这样的格式
运行结果截图: