using namespace std;
void createlist();
struct list {
int num;
list * next;
};
list * head;
void createlist()
{
list * p;
list * end;
end =new list;
p=new list;
cout<<"echo 0 as end"<<endl;
cin>>p->num;
while(p->num!=0)
{
if(head->next==NULL){
head->next=p;
end=p->next;
}else{
end=p;
end=p->next;
}
p=new list;
cin>>p->num;
}
end=NULL;
free(end);
}
int main()
{
head=new list;
head=NULL;
createlist();
while(head->next!=NULL){
cout<<head->num;
head=head->next;
}
return 1;
}
错误提示:No symbol "new" in current context.
13 个解决方案
#1
你什么编译器啊
#2
g++编译能通过,没报错!!!
#3
把list换个名字试试,和stl里的list关键字重名了
#4
还有你申请空间的操作有点问题
#include <iostream>
using namespace std;
void createlist();
struct list{
int num;
list* next;
};
list* head = NULL;
void createlist()
{
list* p = new list;
list* end = NULL;
cout << "echo 0 as end " <<endl;
cin >> p-> num;
while(p->num != 0)
{
p->next = NULL;
if(head == NULL)
{
head = end = p;
}
else
{
end ->next = p;
end = p;
}
p = new list;
cin >> p->num;
}
}
int main()
{
createlist();
list* p = head;
list* tmp = NULL;
while(p != NULL)
{
cout << p-> num << " ";
tmp = p->next;
// 释放
delete p;
p = tmp;
}
return 1;
}
#5
谢谢LS的哈,我用的是linux下的eclipse,不知道为什么我这老报错!
程序有问题么?
程序有问题么?
#6
那是做java的吧?
做C++选择其他编译器比较好
做C++选择其他编译器比较好
#7
是啊,但下个插件也可以编译C++的,linux下还不知道怎么装g++呢!
#8
createlist里好像也有点问题吧,P一直在分配空间但P的地址又没有改变
#9
这是我以前写的一个链表的头文件,参考一下吧
#include<cstdlib>
#include<iostream>
using namespace std;
#define NULL 0
typedef int DataType;
typedef struct Node
{
DataType data;
struct Node *next;
}SLNode;
void ListInitiate(SLNode **head) //初始化链表
{
if((*head=new SLNode)==NULL)
exit(1);
(*head)->next=NULL;
}
int ListLength(SLNode *head) //获取长度
{
SLNode *p=head;
int size=0;
while(p->next!=NULL)
{
p=p->next;
size++;
}
return size;
}
int ListInsert(SLNode *head,int i,DataType x) //插入链表元素
{
SLNode *p,*q;
int j;
p=head;
j=-1;
while(p->next!=NULL&&j<i-1)
{
p=p->next;
j++;
}
if(j!=i-1)
{
cout<<"插入位置参数错误!"<<endl;
return 0;
}
if((q=new SLNode)==NULL)
exit(1);
q->data=x;
q->next=p->next;
p->next=q;
return 1;
}
int ListDelete(SLNode *head,int i,DataType *x) //删除链表元素
{
SLNode *p,*s;
int j;
p=head;
j=-1;
while(p->next!=NULL&&p->next->next!=NULL&&j<i-1)
{
p=p->next;
j++;
}
if(j!=i-1)
{
cout<<"删除位置参数错误!"<<endl;
return 0;
}
s=p->next;
*x=s->data;
p->next=p->next->next;
free(s);
return 1;
}
int ListGet(SLNode *head,int i,DataType *x) //取第I个元素,X用来保存
{
SLNode *p;
int j;
p=head;
j=-1;
while(p->next!=NULL&&j<i)
{
p=p->next;
j++;
}
if(j!=i)
{
cout<<"取元素位置参数错误"<<endl;
return 0;
}
*x=p->data;
return 1;
}
void ListDestroy(SLNode **head) //稍毁链表
{
SLNode *p,*p1;
p=*head;
while(p!=NULL)
{
p1=p;
p=p->next;
free(p1);
}
*head=NULL;
}
void ListPrint(SLNode *head) //打印链表
{
SLNode *p;
p=head;
while(p->next!=NULL)
{
cout<<p->next->data<<endl;
p=p->next;
}
}
#10
上面的头文件#include<cstdlib>删掉吧,我是用C语言改过来的
#11
PcrazyC说的也有道理
createlist里好像也有点问题吧,P一直在分配空间但P的地址又没有改变
---------------------------------------------------
这个又该怎么解决呢?
还有createlist函数中的变量如p,end,他们都是局部变量,函数执行完之后会丢失吗?
由于刚学所以这些基础的东西还不是很清楚,希望达人帮忙
createlist里好像也有点问题吧,P一直在分配空间但P的地址又没有改变
---------------------------------------------------
这个又该怎么解决呢?
还有createlist函数中的变量如p,end,他们都是局部变量,函数执行完之后会丢失吗?
由于刚学所以这些基础的东西还不是很清楚,希望达人帮忙
#12
像我在9楼的那样,将链表的初始化和插入写成各自的函数,HEAD这个指针用来代表这个链表
#13
但是,像ckt1120的程序也能出正确的结果..createlist函数中的变量如p,end,他们都是局部变量,函数执行完之后不会丢失吗?运行结果又是怎么样得来的呢?
,P一直在分配空间但P的地址又没有改变,我已经晕掉了....
,P一直在分配空间但P的地址又没有改变,我已经晕掉了....
#1
你什么编译器啊
#2
g++编译能通过,没报错!!!
#3
把list换个名字试试,和stl里的list关键字重名了
#4
还有你申请空间的操作有点问题
#include <iostream>
using namespace std;
void createlist();
struct list{
int num;
list* next;
};
list* head = NULL;
void createlist()
{
list* p = new list;
list* end = NULL;
cout << "echo 0 as end " <<endl;
cin >> p-> num;
while(p->num != 0)
{
p->next = NULL;
if(head == NULL)
{
head = end = p;
}
else
{
end ->next = p;
end = p;
}
p = new list;
cin >> p->num;
}
}
int main()
{
createlist();
list* p = head;
list* tmp = NULL;
while(p != NULL)
{
cout << p-> num << " ";
tmp = p->next;
// 释放
delete p;
p = tmp;
}
return 1;
}
#5
谢谢LS的哈,我用的是linux下的eclipse,不知道为什么我这老报错!
程序有问题么?
程序有问题么?
#6
那是做java的吧?
做C++选择其他编译器比较好
做C++选择其他编译器比较好
#7
是啊,但下个插件也可以编译C++的,linux下还不知道怎么装g++呢!
#8
createlist里好像也有点问题吧,P一直在分配空间但P的地址又没有改变
#9
这是我以前写的一个链表的头文件,参考一下吧
#include<cstdlib>
#include<iostream>
using namespace std;
#define NULL 0
typedef int DataType;
typedef struct Node
{
DataType data;
struct Node *next;
}SLNode;
void ListInitiate(SLNode **head) //初始化链表
{
if((*head=new SLNode)==NULL)
exit(1);
(*head)->next=NULL;
}
int ListLength(SLNode *head) //获取长度
{
SLNode *p=head;
int size=0;
while(p->next!=NULL)
{
p=p->next;
size++;
}
return size;
}
int ListInsert(SLNode *head,int i,DataType x) //插入链表元素
{
SLNode *p,*q;
int j;
p=head;
j=-1;
while(p->next!=NULL&&j<i-1)
{
p=p->next;
j++;
}
if(j!=i-1)
{
cout<<"插入位置参数错误!"<<endl;
return 0;
}
if((q=new SLNode)==NULL)
exit(1);
q->data=x;
q->next=p->next;
p->next=q;
return 1;
}
int ListDelete(SLNode *head,int i,DataType *x) //删除链表元素
{
SLNode *p,*s;
int j;
p=head;
j=-1;
while(p->next!=NULL&&p->next->next!=NULL&&j<i-1)
{
p=p->next;
j++;
}
if(j!=i-1)
{
cout<<"删除位置参数错误!"<<endl;
return 0;
}
s=p->next;
*x=s->data;
p->next=p->next->next;
free(s);
return 1;
}
int ListGet(SLNode *head,int i,DataType *x) //取第I个元素,X用来保存
{
SLNode *p;
int j;
p=head;
j=-1;
while(p->next!=NULL&&j<i)
{
p=p->next;
j++;
}
if(j!=i)
{
cout<<"取元素位置参数错误"<<endl;
return 0;
}
*x=p->data;
return 1;
}
void ListDestroy(SLNode **head) //稍毁链表
{
SLNode *p,*p1;
p=*head;
while(p!=NULL)
{
p1=p;
p=p->next;
free(p1);
}
*head=NULL;
}
void ListPrint(SLNode *head) //打印链表
{
SLNode *p;
p=head;
while(p->next!=NULL)
{
cout<<p->next->data<<endl;
p=p->next;
}
}
#10
上面的头文件#include<cstdlib>删掉吧,我是用C语言改过来的
#11
PcrazyC说的也有道理
createlist里好像也有点问题吧,P一直在分配空间但P的地址又没有改变
---------------------------------------------------
这个又该怎么解决呢?
还有createlist函数中的变量如p,end,他们都是局部变量,函数执行完之后会丢失吗?
由于刚学所以这些基础的东西还不是很清楚,希望达人帮忙
createlist里好像也有点问题吧,P一直在分配空间但P的地址又没有改变
---------------------------------------------------
这个又该怎么解决呢?
还有createlist函数中的变量如p,end,他们都是局部变量,函数执行完之后会丢失吗?
由于刚学所以这些基础的东西还不是很清楚,希望达人帮忙
#12
像我在9楼的那样,将链表的初始化和插入写成各自的函数,HEAD这个指针用来代表这个链表
#13
但是,像ckt1120的程序也能出正确的结果..createlist函数中的变量如p,end,他们都是局部变量,函数执行完之后不会丢失吗?运行结果又是怎么样得来的呢?
,P一直在分配空间但P的地址又没有改变,我已经晕掉了....
,P一直在分配空间但P的地址又没有改变,我已经晕掉了....