所以我试图在C中实现一个Stack,我的push方法似乎是在主运行中使我的循环两次。我的意思是我有:
int main(int argc, char *argv[]){
int i;
for(int i = 0; i < 10; i++)
push(getchar());
}
然后我会在程序终止之前推送5次。如果我在那里放一个print语句,例如:
printf("i: %i ", i);
然后我得到myInput i=0 i=1 myInput
等等。
问题似乎在我的推送方法中,但我不确定它有什么问题。我是malloc的新手,所以如果问题很明显,我很抱歉。我无法弄清楚造成这种情况的原因。
我的代码:
struct Node{
char c;
struct Node *nextNode;
};
struct Node *head = NULL;
char pop(){ ... }
int empty(){ ... }
void push(char ch){
struct Node *next = (struct Node *) malloc(sizeof(struct Node));
next->c = ch;
next->nextNode = head;
head = next;
}
我确定这里有多个问题,但我不是要求免费的代码修复,我只是想解决这个问题。
非常感谢任何提示或建议,并提前感谢您。
编辑:user2802841和luk32是对的,我在字符中传递的方式意味着换行符与实际字符一起使用,使其看起来像是在跳过。添加一个额外的getchar()来使用换行解决了这个问题,非常感谢你。