#include <stdio.h>
#include <stdlib.h>
typedef int dataType;
// 3.6 链式栈
typedef struct linkStackNode
{
dataType data;
struct linkStackNode *next;
}node,*linkStack;
// 1.初始化链式栈
void init(linkStack *top)
{
*top = NULL;
}
// 2.判断栈是否为空
int empty(linkStack top)
{
return !top;
}
// 3. 读取栈顶结点
node *read(linkStack top)
{
return top;
}
// 4.输出链式栈中各结点值
void display(linkStack top)
{
if(!top)
{
printf("栈空,无法输出结点!\n");
return;
}
while (top)
{
printf("%d ",top->data);
top = top->next;
}
printf("\n");
}
// 5.入栈
void push(linkStack *top, dataType x)
{
node *q = (node*) malloc(sizeof(node));
q->data = x;
q->next = *top; // 新结点放在栈顶元素上面
*top = q; // 栈顶指针指向新结点
}
// 6.出栈
void pop(linkStack *top)
{
if(!*top)
{
printf("栈空,无法出栈!\n");
return;
}
node *p = *top;
*top = p->next; // 更新栈顶指针
free(p);
}
int main()
{
linkStack top; // 声明一个栈顶指针
init(&top); // 初始化链式栈
display(top); // 输出栈中各元素的值
dataType a = 1,b = 2;
printf("元素%d入栈\n",a);
push(&top,a); // 入栈
display(top);
printf("元素%d入栈\n",b);
push(&top,b);
display(top);
printf("出栈\n");
pop(&top); // 出栈
display(top);
return 0;
}
版权属于:
lixiangrong
作品采用:
《
署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)
》许可协议授权
评论 (0)