#include<stdio.h>
#include<stdlib.h>
struct node{
int info;
node *link;
};
node *top = NULL;
void push();
void pop();
void display();
main()
{
int choice;
while(1)
{
printf("Enter your choice:\n1.Push\n2.Pop\n3.Display\n4.Exit\n");
scanf("%d",&choice);
switch(choice)
{
case 1:
push();
break;
case 2:
pop();
break;
case 3:
display();
break;
case 4:
exit(1);
break;
default:
printf("Wrong choice");
}
// getch();
}
}
void push()
{
node *tmp;
int pushed_item;
tmp = new node;
printf("Enter the value to be pushed in the stack:");
scanf("%d",&pushed_item);
tmp->info=pushed_item;
tmp->link=top;
top=tmp;
}
void pop()
{
node *tmp;
if(top == NULL)
printf("Stack is empty");
else
{
tmp=top;
printf("Popped item is %d",tmp->info);
top=top->link;
delete tmp;
}
}
void display()
{
node *ptr;
ptr = top;
if(top==NULL)
printf("Stack is empty");
else
{
while(ptr != NULL)
{
printf("%d\n",ptr->info);
ptr=ptr->link;
}
}
}
每当我尝试创建新节点时都会收到错误,例如
node *tmp;
tmp = new node;
错误在第二行。它在TurboC ++等其他IDE中运行正常,但在Netbeans中,它给出了错误:“无法找到其声明的标识符。”
答案 0 :(得分:5)
C中没有new
(和delete
)运算符。您必须使用标准函数malloc
(和free
)声明的un标头<stdlib.h>
代替。
考虑到这个结构定义
struct node{
int info;
node *link;
};
C中的无效。您必须在链接定义中使用标记struct
。例如
struct node
{
int info;
struct node *link;
};
C和C ++中的函数main应具有返回类型int
。
似乎TurboC ++将您的代码编译为C ++代码。