| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 533 人关注过本帖
标题:单向链表的输出问题
只看楼主 加入收藏
kknd84913
Rank: 1
等 级:新手上路
帖 子:61
专家分:0
注 册:2012-12-26
结帖率:0
收藏
 问题点数:0 回复次数:2 
单向链表的输出问题
代码:
/*   使用学生信息动态创建一个单链表  */
#include <stdio.h>
#include <malloc.h>

struct stuNode
{
    int date;
    struct NumNode*next;
};

main()
{
    int i=0,j=0,k=0;
    struct stuNode *head;
    struct stuNode *p;
    struct stuNode *q;
    printf("\t\t实例087(练习A)  使用学生信息动态创建一个单链表\n\n");
    printf("请输入要输入的学生的人数:\n");
    scanf("%d",&i);
    for(k=i;k>=1;--k)
    {
        printf("请输入学生的学号:\n");
        p=(struct stuNode*)malloc(sizeof(struct stuNode));  //请求一个动态的分配空间
        scanf("%d",&p->date);
        p->next=NULL;
        if(j==0)
            head=p;
        else
            q->next=p;
        q=p;
    }
    printf("输入的学生的学号是:\n");
    printf("%d\n",q->date);
    q=q->next;
   
}


学号能输入进去 但是输出的时候只有输出最后一个输入的值 ,现在我想输出全部的输入值要怎么改写printf语句?
搜索更多相关主题的帖子: include 动态 
2013-01-24 10:33
ksddah
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:53
专家分:135
注 册:2012-12-11
收藏
得分:0 
当然只有一个输出,
 printf("%d\n",q->date);
    q=q->next;
不是一个循环,你只输出了表尾,而且你的链表创建好像有些问题
程序代码:
/*   使用学生信息动态创建一个单链表  */
#include <stdio.h>
#include <malloc.h>

struct stuNode
{
    int date;
    struct NumNode*next;
};

main()
{
    int i=0,j=0,k=0;
    struct stuNode *head;
    struct stuNode *p;
    struct stuNode *q;
    printf("\t\t实例087(练习A)  使用学生信息动态创建一个单链表\n\n");
    printf("请输入要输入的学生的人数:\n");
    scanf("%d",&i);
    
    //创建链表 
    if(i<=0)     
       {
            head=NULL;
         printf("创建链表失败\n");
       }
    else
    {
       p=(struct stuNode*)malloc(sizeof(struct stuNode));  //请求一个动态的分配空间
       head=p;
       q=head;
       printf("请输入学生的学号:\n");
       scanf("%d",&p->date);
       for(k=i;k>1;k--)
       {
           p=(struct stuNode*)malloc(sizeof(struct stuNode)); 
          printf("请输入学生的学号:\n");
          scanf("%d",&p->date);
          q->next=p;
          q=p;
       }
       p->next=NULL;
    }
   
   
   //输出链表
   
   q=head;
   if(q==NULL)
     printf("链表为空\n");
   else
    {
       printf("学生学号依次是:"); 
       while(q->next)
       {
          printf("%-3d",q->date);
          q=q->next;
       }
       printf("%-3d",q->date); 
    }
}
    
    
       
         

图片附件: 游客没有浏览图片的权限,请 登录注册
2013-01-24 11:16
kknd84913
Rank: 1
等 级:新手上路
帖 子:61
专家分:0
注 册:2012-12-26
收藏
得分:0 
回复 2楼 ksddah
谢谢指教 不过这段程序还有个有问题的地方  就是struct构造体里面的*next指针前面的那段字母貌似是以前输入错误的,应该是struct构造体名,但是程序却一样能执行不知道为什么。
2013-01-24 11:29
快速回复:单向链表的输出问题
数据加载中...
 
   



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

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