新手到C在这里和以下在线书籍教程。(我一直在尝试链表,但现在有点复杂,将返回到这些稍后。)我有以下算法:
Algorithm: PUSH (STACK, ITEM)
[STACK is an array of MAXSIZE and ITEM is an item to be pushed onto
stack]
1. [Check for stack overflow]
If TOP = MAXSIZE - 1 then
a) Print: Overflow
b) Return
2. [Increase top by 1]
Set TOP = TOP + 1
3. [Insert item in new top position]
Set STACK[TOP] = ITEM
4. Return
但是,我不明白步骤1,对于Top
,我应该如何初始化它,因为Top
应该指示一些预先存在的值?例如:
(My尝试)
#include <stdlib.h>
#include <stdio.h>
int push(int item, int(*stack)[item]){
int top;
if(top == sizeof(*stack)/sizeof(*stack[0])-1){
printf("Overflow");
return -1;
}
top++;
*stack[top] = item;
return **stack;
}
int main(void){
int arr[4] = {0 , 1, 2, 3};
int itm = 2;
int result;
result = push(itm, &arr);
printf("\nResult: %i", result);
return 0;
}
总是会产生溢出
1条答案
按热度按时间4si2a6ki1#
你只需要存储top的当前值,并将它和栈沿着发送到任何地方。你应该定义一个struct,如下所示:
创建一个新堆栈,如下所示:
现在你所有的函数都应该接收一个指向这个堆栈的指针,像push这样的函数应该更新top的值。