您的位置:首页 > 其它

单链表实现栈

2015-10-15 17:39 99 查看
#include <stdio.h>
#include <stdlib.h>

typedef char stack_element_t;

typedef struct stack_node_s
{
stack_element_t element;
struct stack_node_s *restp;
}stack_node_t;

/*Stack top pointer*/
typedef struct
{
stack_node_t *topp;
}stack_t;

void push(stack_t *sp, stack_element_t c)
{
stack_node_t *newp;

/*Creates and defines new node*/
newp = (stack_node_t*)malloc(sizeof(stack_node_t));
newp->element = c;
newp->restp = sp->topp;

/*Renew stack top pointer*/
sp->topp = newp;
}

stack_element_t pop(stack_t *sp)
{
stack_node_t *to_freep;
stack_element_t ans;

to_freep = sp->topp;
ans = to_freep->element;
sp->topp = to_freep->restp;
free(to_freep);

return ans;
}

int main(void)
{
stack_t s = {0};

push(&s, '2');
push(&s, '+');
push(&s, 'C');
push(&s, '/');

printf("\nEmptying stack: \n");
while(s.topp != NULL)
printf("%c\n", pop(&s));

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: