利用链表实现一个先入后出的栈结构,并提供栈操作的push和pop的接口
2017-02-21 19:29
375 查看
利用链表实现一个先入后出的栈结构,并提供栈操作的push和pop的接口
#include <stdio.h>#include <stdlib.h>
#define Max 10
struct stack_data
{
int stack_text;
struct stack_data* next;
};
typedef struct stack_data Stack;
typedef struct stack_data* Link;
enum return_result{FULL_OK = 30,FULL_NO,EMPTY_OK,EMPTY_NO,PUSH_OK,PUSH_NO};
int create_stack(Link* stack)
{
*stack = (Stack*)malloc(sizeof(Stack));
if(*stack == NULL)
{
printf("create stack is error!\n");
exit(-1);
}
}
void create_link(Link *head)
{
create_stack(head);
(*head)->next = NULL;
}
void inseret_stack_head(Link head,Link stack)
{
stack->next = head->next;
head->next = stack;
}
int pop_stack(Link head)
{
int num;
Link p = head->next;
if(p != NULL)
{
head->next = p->next;
num = p->stack_text;
free(p);
}
return num;
}
int main()
{
int i,num;
Link stack;
Link head;
create_link(&head);
Link p = head;
create_stack(&stack);
for(i = 0;i < Max;i++)
{
create_stack(&stack);
stack->stack_text = i + 1;
inseret_stack_head(head,stack);
}
for(i = 0;i < Max;i++)
{
num = pop_stack(head);
printf("num is : %d\n",num);
}
return 0;
}
相关文章推荐
- 《算法》第一章——利用两个栈实现一个队列的push和pop操作
- cc150:实现一个栈,除了push和pop操作,还要实现min函数以返回栈中的最小值。
- 实现一个栈,除了push和pop操作,还要实现min函数以返回栈中的最小值,
- 实现一个栈,要求Push(入栈),Pop(出栈),Min(返回最小值的操作)的时间复杂度为O(1)
- 实现一个栈,要求实现Push(入栈)、Pop(出栈)、Min(返回最小值的操作)的时间复杂度为O(1)
- 用两个栈来实现一个队列,完成队列的Push和Pop操作。队列中的元素为int类型。
- 设计一个栈结构,满足一下条件:min,push,pop操作的时间复杂度为O(1)。
- 创建接口(接口,提供其他人进行操作的一个入口就是将我们原来实现功能的程序删了写成那个接口让别人来实现功能,为他人提供操作我们这儿的一个入口)
- 实现一个栈(元素遵守先入后出顺序),能够通过 min 方法在 O(1)时间内获取栈中的最小元素。同时,栈的基本操作:入栈(Push)、出栈(Pop),也是在O(1)时间内完成的
- 算法2_实现一个栈,除了push和pop操作,还要实现min函数以返回栈中的最小值,时间复杂度都为O(1)(keep it up)
- 一个栈,只提供push,pop,top,empty四种操作(这四种操作就是C++标准里的操作),对该栈的元素进行排序。
- 实现一个栈,使push,pop,min操作只需要o(1)时间
- 10.1-2 说明如何用一个数组A[1..n]来实现两个栈,使得两个栈中的元素总数不到n时,两者都不会发生上溢,注意PUSH和POP操作的时间应为O(1)。
- 【数据结构】实现一个栈,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值的操作)的时间复杂度为O(1)
- 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
- 011实现一个栈,除了push和pop操作,还要实现min函数以返回栈中的最小值,时间复杂度都为O(1)(keep it up)
- 一个栈,只提供push,pop,top,empty四种操作(这四种操作就是C++标准里的操作),对该栈的元素进行排序
- JAVA实现用两个栈来实现一个队列,完成队列的Push和Pop操作(《剑指offer》)
- 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
- 实现一个栈,要求push,pop,Min的操作时间复杂度为O(1)