//栈的链式储存(不存在上溢)
#include<malloc.h>
#include<stdio.h>
typedef char ElemType;
struct linknode
{
ElemType data;
struct linknode *next;
};
//init a stack
void initstack(struct linknode **s)
{
*s=NULL;
}
//push
void push(struct linknode **s,ElemType x)
{
struct linknode *q;
q=(struct linknode *)malloc(sizeof(struct linknode));
q->data=x;
q->next=*s;
*s=q;//Point to the head of stack.
}
//pop
void pop(struct linknode **s)
{
struct linknode *t;
if(*s==NULL)
{
printf("The stack is empty./n");
}
else
{
t=*s;
*s=t->next;
free(t);// free the EMS memory,in case of memory leaks.
}
}
//Get the top of stack
ElemType Gettop(struct linknode **s)
{
if(*s==NULL)
{
printf("The stack is empty./n");
}
else return ((*s)->data);
}
//dispay the nodes in stack
void dispay(struct linknode **s)
{
struct linknode *q;
printf("the nodes in stack:/n");
q=*s;
while(q!=NULL)
{
printf("%5c",q->data);
q=q->next;
}
printf("/n");
}
main()
{
struct linknode s;
struct linknode *stack=&s;
initstack(&stack);
printf("Push some words into the stack./n");
push(&stack,'i');
push(&stack,'a');
dispay(&stack);
printf("Get the top of stack:%5c/n",Gettop(&stack));
printf("Pop one node,/n");
pop(&stack);
dispay(&stack);
printf("Hello/n");
}
转载于:https://blog.51cto.com/8672742/1368562