C语言问题:建立一个由3个学生数据组成的单向动态链表,向每个结点输入学生的数据(学号姓名成绩)逐个输出

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言问题:建立一个由3个学生数据组成的单向动态链表,向每个结点输入学生的数据(学号姓名成绩)逐个输出相关的知识,希望对你有一定的参考价值。

有什么问题程序如下:
#include<stdio.h>
#include<malloc.h>
#define LEN sizof(struct student)
struct student

int num;
float score;
struct student*next;
;
void main()

struct student*head,*p,*s;
head=p=(struct student*)malloc(LEN);
scanf("%d,%f,&p->num,&p->score");
p= (struct student*)malloc(LEn);
scanf ("%d,%f,&p->num,&p->score");
s= (struct student*)malloc(LEn);
scanf ("%d,%f,&p->num,&p->score");
head->next=p;
head->next=s;

P=head;
printf("\n结点1:%d,6.2f\n",p->num,p->core);
p=p->next;
printf("\n结点2:%d,6.2f\n",p->num,p->core);
p=p->next;
printf("\n结点3:%d,6.2f\n",p->num,p->core);

#include<stdio.h>
#include<malloc.h>
#define LEN sizeof(struct student) //这里有变化

struct student

int num;
float score;
struct student*next;
;

void main()

student *head,*p,*s,*q;
head=(struct student*)malloc(LEN);
scanf("%d,%f,&p->num,&head->score");
p=(struct student*)malloc(LEN); //这里有变化
scanf ("%d,%f,&p->num,&p->score");
s= (struct student*)malloc(LEN); //这里有变化
scanf ("%d,%f,&p->num,&p->score");
head->next=p;
head->next=s;

q=head; //这里有变化
printf("\n结点1:%d,6.2f\n",q->num,q->score);//这里有变化
q=q->next;
printf("\n结点2:%d,6.2f\n",q->num,q->score);//这里有变化
q=q->next;
printf("\n结点3:%d,6.2f\n",q->num,q->score);//这里有变化


你对比你的那个程序看你错在那里,很多都是细节问题
参考技术A struct student*head,*p,*s;
head=p=(struct student*)malloc(LEN);
scanf("%d,%f,&p->num,&p->score");
p= (struct student*)malloc(LEn);
scanf ("%d,%f,&p->num,&p->score");
s= (struct student*)malloc(LEn);
scanf ("%d,%f,&p->num,&p->score"); ------------------>第一个错误,p应该为s
head->next=p;
head->next=s; ------------------>第二个错误,head应该为p

数据结构 单向动态链表的建立和输出

#include<stdio.h>
#include<stdlib.h>
struct student{
  long int num;//学号
  float score;//成绩
  struct student*next;//指向下一个学生
  };
  int n=0;//有n个学生数据

  /*创建链表函数*/
  struct student* creat()
  {
      struct student *p1,*p2,*head;
      p2=p1=(struct student*)malloc(sizeof(struct student));//创建一个!!动态存储空间
      printf("please enter the first student:\n");
      scanf("%ld,%f",&p1->num,&p1->score);
      head=NULL;
      while(p1->num!=0)
      {
         n=n+1;
         if(n==1)head=p1;//头指针指向第一个数据
         else p2->next=p1;
         p2=p1;
         p1=(struct student*)malloc(sizeof(struct student));//开辟动态存储区
         scanf("%ld,%f",&p1->num,&p1->score);
      }
      p2->next=NULL;
      return head;
  }
  /*输出函数*/
 void print(struct student *head)
  {
      struct student *p1;
      p1=head;
      while(p1->num!=0)
      {
         printf("\nnum:%ld,score:%f",p1->num,p1->score);
         p1=p1->next;
      }

  }
  void main()
  {
     struct student *head;
     head=creat();
     printf("plese printf the num and score\n");
     print(head);
  } 
数据结构要把我折磨疯了,视频我已经看了四五遍了,自己写代码还是有问题。。很崩溃。慢慢来。!
结构体创建和结构体指针,得到了提高。函数调用,该调用哪个参数,返回值应该是哪个变量,很重要!
关于scanf,键盘输入时,要与scanf里面格式要一模一样,空格都空格,用逗号时记得运行界面输入法转为英文!!!!

以上是关于C语言问题:建立一个由3个学生数据组成的单向动态链表,向每个结点输入学生的数据(学号姓名成绩)逐个输出的主要内容,如果未能解决你的问题,请参考以下文章

c语言:建立简单的静态链表,它由3个学生数据的结点组成,要求输出各结点的数据

c语言:写一个函数建立一个有3名学生数据的单向动态链表

数据结构 单向动态链表的建立和输出

C语言提升

单向链表

c语言中创建动态链表