求c语言大神,指针指向链表的数据如何进行运算和比较?这样写语法是否错误呢?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求c语言大神,指针指向链表的数据如何进行运算和比较?这样写语法是否错误呢?相关的知识,希望对你有一定的参考价值。
主要问题一直出现在这两行
warning C4047: '==' : 'char [10]' differs in levels of indirection from 'const int '
error C2059: syntax error : 'type'
虽然看得懂英语的意思,但是改来改去还是不行
已经在头文件里声明了结构体了
int count = 0;
typedef struct stu
char num[10];
char name[10];
char sex[3];
int chinese;
int math;
int english;
float sum;
float avg;
struct stu *next;
stu_link;
stu_link *head;
初学者 第一次因为作业要求使用链表 希望各位大神帮忙!
main()
//定义结构类型
struct human
char name[10];
int sex;
int age;
;
//声明结构变量和结构指针,并初始化
struct human x="WangPing",1,30,*p=&x;
//利用结构指针显示结构中的数据
cout<<"(*p).name="<<(*p).name<<endl;
cout<<"(*p).sex="<<(*p).sex<<endl;
cout<<"(*p).age="<<(*p).age<<endl;
cout<<"-------------------------"<<endl;
//利用new运算符为p分配内存
p=new human;
//从键盘上为p指向的结构对象赋值
cout<<"p->name=";
cin>>p->name;
cout<<"p->sex=";
cin>>p->sex;
cout<<"p->age=";
cin>>p->age;
cout<<"-------------------------"<<endl;
//显示p所指结构对象的值
cout<<"p->name="<<p->name<<endl;
cout<<"p->sex="<<p->sex<<endl;
cout<<"p->age="<<p->age<<endl;
cout<<"-------------------------"<<endl;
//显示结构变量的值
cout<<"x.name="<<x.name<<endl;
cout<<"x.sex="<<x.sex<<endl;
cout<<"x.age="<<x.age<<endl;
//释放p指向的内存
delete p;
#include<iostream.h>
main()
//定义结构类型
struct human
char name[10];
int sex;
int age;
;
//声明结构数组和结构指针变量,并初始化
human x[]="WeiPing",1,30,"LiHua",1,25,"LiuMin",0,23,*p=NULL;
//用下标变量的输出结构数组的元素
for (int i=0;i<3;i++)
cout<<x[i].name<<'\t';
cout<<x[i].sex<<'\t';
cout<<x[i].age<<endl;
cout<<"----------------"<<endl;
//用结构指针输出结构数组的元素
for (p=x;p<=&x[2];p++)
cout<<p->name<<'\t';
cout<<p->sex<<'\t';
cout<<p->age<<endl;
#include<iostream.h>
main()
//定义一个包含指针成员的结构类型
struct test
char *str;
int *ip;
x;
//使用结构变量x中的整型指针ip
x.ip=new int; //分配1个单元
*(x.ip)=100;
cout<<"x.ip:"<<x.ip<<'\t'<<*(x.ip)<<endl;
cout<<"---------------"<<endl;
delete x.ip;
x.ip=new int[5]; //分配5个单元
for(int i=0;i<5;i++)
*(x.ip+i)=100+i;
cout<<"x.ip:"<<endl;
for(i=0;i<5;i++)
cout<<x.ip+i<<'\t'<<(*(x.ip+i))<<endl;
delete x.ip;
cout<<"---------------"<<endl;
//使用结构变量x中的字符型指针str
x.str=new char('A'); //分配1个单元
cout<<"x.str:"<<(*x.str)<<endl;
cout<<"---------------"<<endl;
delete x.str;
x.str=new char[5]; //分配多个单元
*x.str='G';
*(x.str+1)='o';
*(x.str+2)='o';
*(x.str+3)='d';
*(x.str+4)='\0';
cout<<"x.str:"<<x.str<<endl;
delete x.str;
cout<<"---------------"<<endl;
//在声明结构变量时初始化
test y="Very Good!",NULL;
cout<<"y.str:"<<y.str<<endl;
cout<<"y.ip:"<<y.ip<<endl;
#include<iostream.h>
main()
//定义date结构
struct date
int year;
int month;
int day;
;
//定义baby结构
struct baby
int num;
float weight;
date birthday; // date为结构类型
;
//声明baby结构变量并初始化
baby b1=10001,10,2002,12,25;
//下列是baby结构变量b1的引用。
cout<<"b1.num="<<b1.num<<endl;
cout<<"b1.weight="<<b1.weight<<endl;
cout<<"b1.birthday.year="<<b1.birthday.year<<endl;
cout<<"b1.birthday.month="<<b1.birthday.month<<endl;
cout<<"b1.birthday.day="<<b1.birthday.day<<endl;
cout<<"--------------------------"<<endl;
//声明baby结构变量temp,并进行赋值运算
baby temp;
temp=b1;
cout<<"temp.num="<<temp.num<<endl;
cout<<"temp.weight="<<temp.weight<<endl;
cout<<"temp.birthday.year="<<temp.birthday.year<<endl;
cout<<"temp.birthday.month="<<temp.birthday.month<<endl;
cout<<"temp.birthday.day="<<temp.birthday.day<<endl;
#include<iostream.h>
main()
//定义名为list的递归结构
struct list
char name[10];
int sex;
int age;
list *next; //成员next为指向其自身结构的指针
;
//使用递归结构变量
list L1="WeiPing",1,35.5,NULL;
cout<<"L1:"<<endl;
cout<<"name\t"<<L1.name<<endl;
cout<<"sex\t"<<L1.sex<<endl;
cout<<"age\t"<<L1.age<<endl;
cout<<"next\t"<<L1.next<<endl;
#include<iostream.h>
main()
int i;
//定义名为student的递归结构
struct student
char name[10];
int math;
int computer;
float sum;
student *next; //next成员是指向自身的结构指针
;
//用student声明3个结构指针变量
struct student *head,*tail,*temp;
//申请第1块数据,并设置各结构指针的初值
temp=new struct student; //申请内存
head=temp; // 头指针
tail=head; // 尾指针
//循环为链表输入数据
cout<<"\tname Math Computer"<<endl;
for (i=1;;i++)
cout<<i<<"\t";
cin>>temp->name;
if (temp->name[0]!='*')
cin>>temp->math>>temp->computer;
temp->sum=temp->math+temp->computer;
temp->next=NULL;
tail=temp; //设置链表尾指针
else
// 以下是输入结束处理
delete temp;
tail->next=NULL;
break;
//为下一个学生申请内存
temp->next=new struct student;
temp=temp->next; // 使处理指针temp指向新内存块
//将链表数据从头到尾打印出来
cout<<"--------------------"<<endl;
temp=head;
while (temp!=NULL)
cout<<temp->name<<","<<temp->math<<",";
cout<<temp->computer<<","<<temp->sum<<endl;
temp=temp->next;
追问
额我看完了您发的代码,感觉对我的问题没有什么帮助,您可以直接点告诉我那两句要如何修改吗??谢谢
参考技术A int count = 0;typedef struct stu
char num[10]=0;
char name[10]=0;
char sex[3]=0;
int chinese;
int math;
int english;
float sum;
float avg;
struct stu *next;
stu_link;
stu_link *head;
if((p->num)[0]=='N')
试试行不行
追问谢谢您!没有提示【warning C4047: '==' : 'char [10]' differs in levels of indirection from 'const int '】了
下面另外一个报错您能帮我看看吗?感激不尽!
stu_link *head==NULL;
行不行,提示错误的是哪行
那个 我题目上面有附带图片了 就是第二个划红线那里
你调试了吗,看看几个成绩录入对不对,画线的那行没啥问题呀
追问没事,就float没加(),弄好了 谢谢您!
本回答被提问者采纳C语言数据结构——链表
技术干货第一时间送达!
今天来介绍一下C语言中常见的一种数据结构——链表
如下是链表的结构示意图:
从示意图中我们可以看到,head头结点指向第一个元素,第一个元素的指针指向第二个元素,第二个元素的指针又指向第三个元素,第三个元素的指针指向null。这样我们就可以通过头指针寻找链表中的元素。
下来我们通过一个具体的实例来深入地了解一下链表,编写一个学生信息的链表结构,并且将链表中的信息进行输出。
struct Student
{
char name[20];//姓名
int id;//学号
struct Student* next;//指向下一个节点的指针
};
int count;//表示链表长度
struct Student* create()
{
struct Student* head = NULL;//初始化链表的头指针
struct Student* end, * new;
count = 0;//初始化链表长度
end = new = (struct Student*)malloc(sizeof(struct Student));//动态分配内存空间
printf("请输入姓名,学号 ");
scanf("%s", &new->name);
scanf("%d", &new->id);
while (new->id != 0)
{
count++;
if (count == 1)
{
new->next = head;//使得指向为空
end = new;//跟踪新加入的节点
head = new;//头指针指向首节点
}
else
{
new->next = NULL;//新节点的指向为空
end->next = new;//原来的为节点指向新节点
end = new;//end指向新节点
}
new = (struct Student*)malloc(sizeof(struct Student));//再次动态分配节点的内存空间
scanf("%s", &new->name);
scanf("%d", &new->id);
}
free(new);//释放空间
return head;
};
void show(struct Student* head) {
struct Student *temp;
int index = 1;
printf("有%d位学生: ",count);
temp = head;
while (temp != NULL)
{
printf("第 %d 位学生的姓名是:%s,学号是:%d ", index, temp->name, temp->id);
temp = temp->next;
index++;
}
}
int main() {
struct Student* head;//定义头结点
head = create();//创建节点
show(head);//输出链表
return 0;
}
运行结果
关于实例的代码就不多解释了,注释已经很详细了,多看几遍就明白了。
【END】
如果您觉得本篇文章对您有帮助请转发给更多的人
顺手点一下“在看”也是对小编最大的支持
以上是关于求c语言大神,指针指向链表的数据如何进行运算和比较?这样写语法是否错误呢?的主要内容,如果未能解决你的问题,请参考以下文章