p = head; 这一行出现错误
no match for 'operator=' in 'p = head'
p->next = NULL;这一样出现错误
base operand of `->' has non-pointer type `node'
查了下好像和操作符重载有关?这方面不是太了解,请各位指教
16 个解决方案
#1
重载=运算符
#2
不会吧,贴代码看看
#3
把程序贴出来行不,,谁知道你的p head都是什么东西呀
#4
应该不需要重写赋值操作符;
要看你p和head的具体的类型
要看你p和head的具体的类型
#5
就是单链表创建的程序~
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
using namespace std;
typedef struct student{
int data;
struct student* next;
}node;
/*生成单链表*/
node* createList(){
node* head,p,s; //头指针和临时指针
int data,cycle=1;
head=(node*)malloc(sizeof(node)); //为头指针申请内存空间
p = head;
while(cycle){
printf("\nPlease input the data:");
scanf("%d",&data);
if(data != 0){
s=(node*)malloc(sizeof(node)); //新建一个节点
s->data = data;
printf("\ndata = %d",data);
p->next=s;
p=s;
}esle{
cycle = 0;
}
}
head = head->next;
p->next = NULL;
return head;
}
#6
指向结构体的指针
typedef struct stu{
.........................
}node;
#7
为嘛c++这么麻烦 记得C语言里写这个没有问题啊
#8
c语言也有的,应该你在语言里用的时候都是基本类型作这些操作,
如果是结构体的话 ,就不能直接用 等于号 这些的了!
#9
重载=运算符
为嘛c++这么麻烦 记得C语言里写这个没有问题啊
c语言也有的,应该你在语言里用的时候都是基本类型作这些操作,
如果是结构体的话 ,就不能直接用 等于号 这些的了!
以前写过类似的程序没问题的 都是指向结构体的指针 不能赋值么
#10
node* head,p,s; //头指针和临时指针
这句不对,应该写作:
node *head,*p,*s;
这句不对,应该写作:
node *head,*p,*s;
#11
node* head,p,s; //头指针和临时指针
这句不对,应该写作:
node *head,*p,*s;
啊 对!是这里出问题了...你真细心...
#12
node* head,p,s; //头指针和临时指针
这句不对,应该写作:
node *head,*p,*s;
啊 对!是这里出问题了...你真细心...
#13
node* head,p,s; //头指针和临时指针
这句不对,应该写作:
node *head,*p,*s;
啊 对!是这里出问题了...你真细心...
#14
10楼++
#15
10楼真的好细心啊,佩服,自己真心看不出来
#16
10楼真的好细心啊,佩服,自己真心看不出来
没想到还犯了这错误...好了 给大家散分!
#1
重载=运算符
#2
不会吧,贴代码看看
#3
把程序贴出来行不,,谁知道你的p head都是什么东西呀
#4
应该不需要重写赋值操作符;
要看你p和head的具体的类型
要看你p和head的具体的类型
#5
把程序贴出来行不,,谁知道你的p head都是什么东西呀
就是单链表创建的程序~
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
using namespace std;
typedef struct student{
int data;
struct student* next;
}node;
/*生成单链表*/
node* createList(){
node* head,p,s; //头指针和临时指针
int data,cycle=1;
head=(node*)malloc(sizeof(node)); //为头指针申请内存空间
p = head;
while(cycle){
printf("\nPlease input the data:");
scanf("%d",&data);
if(data != 0){
s=(node*)malloc(sizeof(node)); //新建一个节点
s->data = data;
printf("\ndata = %d",data);
p->next=s;
p=s;
}esle{
cycle = 0;
}
}
head = head->next;
p->next = NULL;
return head;
}
#6
应该不需要重写赋值操作符;
要看你p和head的具体的类型
指向结构体的指针
typedef struct stu{
.........................
}node;
#7
重载=运算符
为嘛c++这么麻烦 记得C语言里写这个没有问题啊
#8
重载=运算符
为嘛c++这么麻烦 记得C语言里写这个没有问题啊
c语言也有的,应该你在语言里用的时候都是基本类型作这些操作,
如果是结构体的话 ,就不能直接用 等于号 这些的了!
#9
重载=运算符
为嘛c++这么麻烦 记得C语言里写这个没有问题啊
c语言也有的,应该你在语言里用的时候都是基本类型作这些操作,
如果是结构体的话 ,就不能直接用 等于号 这些的了!
以前写过类似的程序没问题的 都是指向结构体的指针 不能赋值么
#10
node* head,p,s; //头指针和临时指针
这句不对,应该写作:
node *head,*p,*s;
这句不对,应该写作:
node *head,*p,*s;
#11
node* head,p,s; //头指针和临时指针
这句不对,应该写作:
node *head,*p,*s;
啊 对!是这里出问题了...你真细心...
#12
node* head,p,s; //头指针和临时指针
这句不对,应该写作:
node *head,*p,*s;
啊 对!是这里出问题了...你真细心...
#13
node* head,p,s; //头指针和临时指针
这句不对,应该写作:
node *head,*p,*s;
啊 对!是这里出问题了...你真细心...
#14
10楼++
#15
10楼真的好细心啊,佩服,自己真心看不出来
#16
10楼真的好细心啊,佩服,自己真心看不出来
没想到还犯了这错误...好了 给大家散分!