| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1512 人关注过本帖
标题:他用指针建立了一个链表,不太理解是怎么建立的。求指教
取消只看楼主 加入收藏
木子洋
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2019-6-21
结帖率:0
收藏
 问题点数:0 回复次数:2 
他用指针建立了一个链表,不太理解是怎么建立的。求指教
score *creat(void)
{

    score *head;
    score *p1,*p2,*p3,*max;
    int i,j;
    char t[10];
    n=0;
    p1=p2=p3=(score *)malloc(LEN);/*head=p3; 开辟一个新单元*/
      printf("please input student's information,input 0 exit!\n");
repeat1: printf("please input student's number(number>0):");/*输入学号,学号应大于0*/
       scanf("   %d",&p1->number);
     while(p1->number<0)
     {
         getchar();
         printf("error,please input number again:");
         scanf("%d",&p1->number);
     }
  /*输入学号为字符或小于0时,程序报错,提示重新输入学号*/
    if(p1->number==0)
        goto end;/*当输入的学号为0时,转到末尾,结束创建链表*/
    else
    {
        p3=head;
        if(n>0)
        {
            for(i=0;i<n;i++)
            {
                if(p1->number!=p3->number)
                    p3=p3->next;
                else
                {
                    printf("number repeate,please input again!\n");
                    goto repeat1;
     /*当输入的学号已经存在,程序报错,返回前面重新输入*/
            }
            }
        }
     }
       printf("please input student's name:");
       scanf("%s",&p1->name);/*输入学生姓名*/
       printf("please input student's consume money:");/*输入消费情况;*/
     scanf("%d",&p1->xiaofei);

 while(p1->number!=0)
  {
    n=n+1;
 if(n==1)
  head=p1;
 else

    p2->next=p1;
    p2=p1;
    p1=(score *)malloc(LEN);
    printf("please input student's information,input 0 exit!\n");
repeat2:printf("please input student's number(number>0):");
      scanf("%d",&p1->number);/*输入学号,学号应大于0*/

   while(p1->number<0)
   {getchar();
    printf("error,please input number again:");
       scanf("%d",&p1->number);}
   /*输入学号为字符或小于0时,程序报错,提示重新输入学号*/
  if(p1->number==0)
   goto end;/*当输入的学号为0时,转到末尾,结束创建链表*/
  else
  {
  p3=head;
  if(n>0)
   {for(i=0;i<n;i++)
      {if(p1->number!=p3->number)
    p3=p3->next;
    else
    {printf("number repeate,please input again!\n");
     goto repeat2;
     /*当输入的学号已经存在,程序报错,返回前面重新输入*/
    }
    }
   }
  }
  printf("please input student's name:");
       scanf("%s",&p1->name);/*输入学生姓名*/
     printf("please input student's consume money:");
       scanf("%d",&p1->xiaofei);/*输入消费情况; */
}
end: p1=head;
     p3=p1;
  for(i=1;i<n;i++)
               {
             for(j=i+1;j<=n;j++)
                 {
       max=p1;
       p1=p1->next;

       if(max->number>p1->number)
        {
        k=max->number;
        max->number=p1->number;
        p1->number=k;
         /*交换前后结点中的学号值,使得学号大者移到后面的结点中*/

        strcpy(t,max->name);
        strcpy(max->name,p1->name);
        strcpy(p1->name,t);
     /*交换前后结点中的姓名,使之与学号相匹配*/
                        /*交换前后结点中的消费情况,使之与学号相匹配*/
           }
                 }
    max=head;p1=head;/*重新使max,p指向链表头*/
  }
p2->next=NULL;/*链表结尾*/
       printf("input student's num:%d ge!\n",n);
       getch();
       return(head);

}
搜索更多相关主题的帖子: printf input number 输入 学号 
2019-06-23 19:28
木子洋
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2019-6-21
收藏
得分:0 
这不是完整的代码,只是一部分
2019-06-23 19:38
木子洋
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2019-6-21
收藏
得分:0 
十万火急
2019-06-24 19:04
快速回复:他用指针建立了一个链表,不太理解是怎么建立的。求指教
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.034677 second(s), 11 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved