栈原理
代码实现
代码:栈(入栈,出栈)的数组实现-C文档类资源-CSDN文库https://download.csdn.net/download/Yi_xiong/84971098
typedef struct stack_info
{
int data[10];
int top;
int bottom;
int size;
int cnt;//count
}stack_t;//定义栈的结构体
/*函数定义*/
void push(stack_t *stack, int data);//将数据压入栈
int pop(stack_t *stack);//从栈中取出数据
int main()
{
stack_t stack;
memset(&stack, 0, sizeof(stack));//将stack中的数据都置为0
stack->size = 10;
//stack->data = malloc(stack->size);
push(&stack, 1);
printf("%d", pop(&stack));
}
void push(stack_t *stack, int data)//将数据压入栈
{
if( stack->cnt >= stack->size)//栈为满
{
return;
}
stack->data[stack->top ++] = data;//将数据存入栈顶,同时top加一
stack->cnt++;
}
int pop(stack_t *stack)//从栈中取出数据
{
if( stack->cnt == 0 ) // stack->top == stack->bottom
{
return; //栈为空
}
stack->cnt --;
return stack->data[stack->top --];//从栈顶取出元素,同时top减一
}
笔试题
答案:
9:由于栈的最大长度为4,所以最多可同时容纳4个数据。
A:1不可能在2之前出来,正确顺序是:4,3,5,6,2,1
1进,2进,3进,4进,4出,3出,5进,5出,6进,6出,2出,1出
B: 1进,1出,2进,3进,4进,5进,此时栈已满,6不可能进去,只有5出了以后才能进
所以,B错
C:1进,2进,2出,3进,3出,4进,5进,6进,6出,5出,4出,1出,所以C正确
D:栈最大为4,不能把6个数都放进去,所以D错
5: 除B以外的都选;