gpt4 book ai didi

c - 尝试在 C 中为赋值实现基于数组的堆栈

转载 作者:太空宇宙 更新时间:2023-11-04 07:03:00 26 4
gpt4 key购买 nike

我正在尝试在 C 中实现基于数组的堆栈。我的堆栈应该有两个参数,top(数组中顶部元素的编号)和 array(数组本身)。我的实现如下。

typedef struct
{
char array[20];
int top;
}
stack;

stack mystack;

int Push(char,stack);
char Pop(stack);
char Top(stack);
int isFull(stack);

char input;
char save;

void main()
{
mystack.top = -1;

printf("Please input the characters you would like in your stack \n

while(input != '^')
{
Push( (scanf("%c",&input)) , mystack );

if (isFull(mystack) == 1)
printf("Your Stack is full, please input '^'\n");
}

char junk;
scanf("enter any character to continue %c",&junk);

while(mystack.top != -1)
{
printf("%c \n",Pop(mystack));
}
scanf("enter any character to terminate the program",&junk);
}

int Push(char charpush,stack stackpush)
{
if(stackpush.top >=20 )
return -1;
else
{
stackpush.array[stackpush.top + 1] = charpush;
stackpush.top = stackpush.top +1;
return 0;
}
}
char Pop(stack stackpop)
{
if (stackpop.top != -1)
{
save = stackpop.array[stackpop.top];
stackpop.top = stackpop.top-1;
return save;
}
}
char Top(stack stacktop)
{
if (stacktop.top != -1)
return stacktop.array[stacktop.top];
}
int isFull(stack stackisfull)
{
if (stackisfull.top = -1)
return 0;
else if (stackisfull.top >= 20)
return 1;
else return -1;
}

目前我的程序接受用户输入的字符,但当输入“^”时程序会自动终止。它不显示堆栈,如果字符通过输入并且堆栈已满,它也不会做任何事情。

如果我需要更具体的信息或需要任何进一步的信息,请告诉我。

最佳答案

你有一大堆问题要改正...

  • 你对scanf的误解很大

    • 它不返回读取的内容
    • 它不接受提示
    • 从终端读取时,在按下返回之前它不会“看到”任何东西
  • 当堆栈为空时,您的方法 Pop() 返回什么?

  • 当堆栈为空时,您的方法 Top() 返回什么?

  • 为什么要写while(mystack.top != -1)?编写 while (!isEmpty(mystack)) 然后编写 isEmpty 方法是否更有意义?

  • 你没有初始化 input - 你知道一开始里面有什么吗?

  • 你的缩进“方案”让我很头疼。 :)

关于c - 尝试在 C 中为赋值实现基于数组的堆栈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35805960/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com