求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;

初学者 第一次因为作业要求使用链表 希望各位大神帮忙!

include<iostream.h>
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语言中常见的一种数据结构——链表

如下是链表的结构示意图:

C语言数据结构——链表

从示意图中我们可以看到,head头结点指向第一个元素,第一个元素的指针指向第二个元素,第二个元素的指针又指向第三个元素,第三个元素的指针指向null。这样我们就可以通过头指针寻找链表中的元素。

下来我们通过一个具体的实例来深入地了解一下链表,编写一个学生信息的链表结构,并且将链表中的信息进行输出。

#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>
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;}

运行结果

C语言数据结构——链表

关于实例的代码就不多解释了,注释已经很详细了,多看几遍就明白了。


END

如果您觉得本篇文章对您有帮助请转发给更多的人

顺手点一下“在看”也是对小编最大的支持


以上是关于求c语言大神,指针指向链表的数据如何进行运算和比较?这样写语法是否错误呢?的主要内容,如果未能解决你的问题,请参考以下文章

C语言指针和链表的体会

C语言数据结构——链表

C语言 泛型链表的实现

用C语言数据结构编写 删除顺序表中值为x的元素 跪求大神解答 ! !

40篇学完C语言——(第七篇)地址算术运算

用C语言建立一个顺序存储的线性表并实现线性表的插入和删除操作