链栈的进栈出栈操作
#include <stdio.h>
#include <malloc.h>
typedef struct LNode
{
int data;
struct LNode *next;
}LNode;
LNode* initStack(LNode *&stack){
stack = (LNode*)malloc(sizeof(LNode));
stack->next = NULL;
return stack;
}
int isEmpty(LNode *stack){
if(stack->next==NULL) return 1;
else return 0;
}
//头插法
void push(LNode *&stack,int x){
LNode *s = (LNode*)malloc(sizeof(LNode));
s->data = x;
s->next = stack->next;
stack->next = s;
printf(" %d is pushed!\r\n",x);
}
//y由于采用头插法,故最后插入的节点在链表的头部,故删除头结点的下一个节点就可以
void pop(LNode *&stack,int &e){
LNode *q;
q = stack->next;
stack ->next = stack->next->next;
printf(" %d is poped!\r\n",q->data);
free(q);
}
void print(LNode *stack){
LNode *p;
p=stack->next;
printf("\r\n form top to bottom\r\n");
while(p){
printf("%d ",p->data);
p=p->next;
}
}
int main()
{
LNode* stack;
int e;
initStack(stack);
push(stack,15);
push(stack,19);
push(stack,128);
push(stack,17);
print(stack);
pop(stack,e);
printf("\r\n");
print(stack);
return 0;
}
数据结构之链栈的实现
最新推荐文章于 2024-02-08 16:53:30 发布