【发布时间】:2018-01-02 17:07:04
【问题描述】:
我的问题是基于指针,我想知道如何在函数 printStack() 中传递堆栈顶部,以便我可以访问堆栈的所有节点。我将元素存储在数组中并同时推入堆栈。
在这段代码中,当我执行它时不会打印任何内容。
这是我的代码
#include<stdio.h>
struct stack
{
int data;
struct stack *next;
};
typedef struct stack s;
s *top=NULL,*neu;
//push data into stack
void push(int data)
{
neu = (s *)malloc(sizeof(s));
neu->data= data;
neu->next = NULL;
if(!top)
{
neu=top;
}
else
{
neu->next = top;
top = neu;
}
}
//pop data and move top to top->next
void pop()
{
s *temp = top;
top = top->next;
free(top);
}
//print data present in stack
void printStack(s *top)
{
while(top)
{
printf("%d ",top->data);
pop();
}
}
int main()
{
int i=0,A[3],d;
for(i=0;i<3;i++)
{
scanf("%d",&A[i]);
push(A[i]);
}
printStack(top);
return 0;
}
【问题讨论】:
-
除非您的编辑修复了您最初在代码中出现的拼写错误(为什么首选复制和粘贴),否则您不应根据给出的答案编辑您的代码来修复它。这会通过改变给出答案的上下文来混淆这个问题的未来读者。如果其中一个答案解决了您的问题,请保留您的代码并接受该答案。
标签: c pointers data-structures