Tag:

堆栈:无法将几个字符推入数组

我有一个使用数组实现堆栈的代码,这里是完整的代码: 这里 这个案例就是为什么我不能推出多个角色,而只能推出一个角色? 但我一直在点击一些变量,使用struct初始化她为数组forms推送一些字符: struct stackMhs { char nama[10]; char npm[10]; char telp[10]; int size; }; struct stackMhs stackMhsbaru; 这是带有参数的push()函数,该参数将是函数main()的数据内容: void push(char nm, char np, char tel) { if(stackMhsbaru.size != 10) { stackMhsbaru.nama[stackMhsbaru.size + 1] = nm; stackMhsbaru.npm[stackMhsbaru.size + 1] = np; stackMhsbaru.telp[stackMhsbaru.size + 1] = tel; stackMhsbaru.size++; } else { printf(“stack is full!”); } […]

为什么函数调用而不是变量地址用于检测堆栈增长方向?

我读到了检测堆栈增长检测问题的不同响应,我理解,在现代架构中,堆栈可能会随机增长,可能会在堆外创建,依此类推。 但是,在这个经典的访谈问题中,我想了解为什么人们使用函数调用而不是在同一函数中比较2个局部变量。 我认为必须有一些特殊的理由这样做,但不是一个C /低级开发人员[Java :)],我只是在猜测。 这是我试过的代码: void sub (int *a) { int b; int c; printf (“a:%d\n”, a); printf (“b:%d\n”, &b); printf (“c:%d\n”, &c); if (&b > a) { printf (“Stack grows up.\n”); } else { printf (“Stack grows down.\n”); } } int main (void) { int a; int b; sub (&a); printf (“\nHere we […]

C中的递归深度是否有任何硬连线限制

正在讨论的程序试图使用recursion来计算sum-of-first-n-natural-numbers 。 我知道这可以使用一个简单的公式n*(n+1)/2但这里的想法是使用recursion 。 该计划如下: #include unsigned long int add(unsigned long int n) { return (n == 0) ? 0 : n + add(n-1); } int main() { printf(“result : %lu \n”, add(1000000)); return 0; } 该程序在n = 100,000时运行良好,但当n的值增加到1,000,000 ,会导致Segmentation fault (core dumped) 以下内容取自gdb消息。 Program received signal SIGSEGV, Segmentation fault. 0x00000000004004cc in add (n=Cannot access […]

如何仅使用堆栈操作对堆栈进行排序?

我在网上发现了这个问题。 给定堆栈S,编写C程序以对堆栈进行排序(按升序排列)。 我们不允许对堆栈的实现方式做任何假设。 唯一要使用的function是: Push Pop Top IsEmpty IsFull 我想我们可以构建堆并对其进行排序。 什么是最佳解决方案?