我正在尝试使用2个堆栈来实现队列,但是我的代码无法正常工作。
您能发现错误吗?
from tkinter import *
root = Tk()
myFrame = Frame(root,text="Frame1")
myFrame.grid(row=1,column=1)
MyLabel = Label(myFrame,text="Label inside Frame1")
MyLabel.pack()
答案 0 :(得分:0)
您能发现错误吗?
编译器发现错误的速度比堆栈溢出更快。
OP并未在启用所有警告的情况下进行编译,或者正在使用弱编译器
启用所有警告以节省时间。
int deq(stack*s1, stack*s2)
和int pop(stack *s)
都有相同的问题。
在这种情况下,常见的缺陷是warning: control reaches end of non-void function [-Wreturn-type]
确保每个函数路径都返回一个值。
int pop(stack *s) {
if (s->top == -1) {
printf("UNDERFLOW"); // Notice, no return
} else {
return s->arr[s->top--];
}
}
在声明前也使用push(&s1, ele);
。这使功能签名冲突。在使用前声明或定义push()
。 未定义行为(UB),这会使代码不可靠。
我建议更频繁地打印'\n'
。
// printf("entering");
printf("entering\n");
// or
puts("entering"); // \n automatically added.
答案 1 :(得分:0)
您正在deque
和enque
函数中传递指针地址。
push(&s2, pop(&s1)); --> push(s2, pop(s1));
x = pop(&s2); --> x = pop(s2);
push(&s1, ele);-->push(s1, ele);
因为收到s1
和s2
作为指向deque
和enque
函数的指针
还要考虑@ Mr.Chux提出的更改,请考虑编译器警告,您可以自己解决所有问题。