#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");
}
void en_sequeue(linkstack_t *s,int val)
{
inser_linkstack(s,val);
}
void de_sequeue(linkstack_t *s1,linkstack_t *s2,int *val)
{
int tmp;
while(!linkstack_is_empty(s1))
{
pop_linkstack(s1,&tmp);
inser_linkstack(s2,tmp);
}
pop_linkstack(s2,val);
}
int main()
{
linkstack_t * S1 = creat_empty_linkstack();
linkstack_t * S2 = creat_empty_linkstack();
int i,val;
for(i=1;i<=10;i++)
{
en_sequeue(S1,i);
}
show_linkstack(S1);
for (i=1;i<=10;i++)
{
de_sequeue(S1,S2,&val);
printf("%-3d",val);
}
show_linkstack(S2);
return 0;
}