链表栈的入栈和出栈操作
#include<stdio.h>
#include<stdlib.h>
typedef int ElemType;
typedef struct linknode
{
ElemType data; //数据域
struct linknode *next; //指针域
}ListStack;
//入栈
/*
已知变量:初始化的栈,存了数据的数组,数组的长度
*/
void Push(ListStack *s,ElemType e)
{
ListStack *p;
p=(ListStack*) malloc(sizeof(ListStack));
p->data=e;
p->next=s->next;
s->next=p;
}
//出栈
/*
存了数据的栈
*/
int pop(ListStack *s)
{
ListStack *temp;
int e;
if(s->next==NULL)
return 0;
else
{
temp=s->next;
printf("%d ",temp->data);
s->next=temp->next;
free(temp);
}
}
//输出栈
void printStack(ListStack *s){
ListStack *p=s->next;
while(p!=NULL){
printf("%d",p->data);
p=p->next;
}
}
int main(){
int i;
ListStack *s;
s=(ListStack*)malloc(sizeof(ListStack));
s->next=NULL;
Push(s,5);
Push(s,8);
printStack(s);
pop(s);
pop(s);
pop(s);
Push(s,14);
pop(s);
printf("\n");
}
本内容由安康学院"雨季"原创!