版权声明:转载请注明出处 https://blog.csdn.net/qq_37689106/article/details/82950978
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct node
{
int data;
struct node *next;
}linkstack_t;
linkstack_t * creat_empty_linkstack(void) //创建空的链栈
{
linkstack_t * s = (linkstack_t *)malloc(sizeof(linkstack_t));
s->data = 0;
s->next = NULL;
return s;
}
void inser_linkstack(linkstack_t *s ,int val) //压栈 (头插法)
{
linkstack_t * p = (linkstack_t *)malloc(sizeof(linkstack_t));
p->data = val;
p->next = s->next;
s->next = p;
}
int linkstack_is_empty(linkstack_t *s)
{
return (s->next == NULL)?1:0;
}
void pop_linkstack(linkstack_t *s,int *val) //弹出栈顶(前面采用头插法 也就是弹出首元素)
{
linkstack_t *p = s->next;
*val = p->data;
s->next = p->next;
free(p);
}
void show_linkstack(linkstack_t *s) // 显示
{
linkstack_t *p =s->next;
while(p != NULL)
{
printf("%-3d",p->data);
p = p->next;
}
printf("\n");
}
int main()
{
linkstack_t * S = creat_empty_linkstack();
int i,val;
for(i=1;i<=10;i++)
{
inser_linkstack(S,i);
}
show_linkstack(S);
for(i=1;i<=10;i++)
{
pop_linkstack(S,&val);
printf("%-3d",val);
}
printf("\n");
return 0;
}