鱼C论坛

 找回密码
 立即注册
查看: 1476|回复: 6

帮忙看看 怎么才能输出链表

[复制链接]
发表于 2015-9-20 09:59:50 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. //创建一个链表并输出

  2. #include<stdio.h>
  3. #include<malloc.h>

  4. struct Node * CreatList( int);  //声明创建链表的函数

  5. struct Node{
  6.         int data;
  7.         struct Node *next;
  8. };                            //定义结构体-节点

  9. int main()
  10. {
  11.         int n;
  12.         int t;
  13.         struct Node * p,*q;
  14.         printf("输入要创建的链表长度n:");
  15.         scanf("%d",&n);
  16.         p=CreatList(n);            //创建n+1个节点的链表
  17.         q=p;
  18.        
  19.         printf("输入n个数据到链表:");
  20.         for(p;p->next->next!=NULL;p++){
  21.                 scanf("%d",&t);
  22.                 p->next->data=t;
  23.         }                           //读入n个数到链表

  24.         for(q;q->next->next!=NULL;q++){
  25.                 printf("%d  ",q->next->data);
  26.         }

  27.         return 0;
  28. }

  29. struct Node * CreatList(int n)
  30. {
  31.         struct Node A;           //链表头结点
  32.         struct Node *p,*q,*T;
  33.         int i;
  34.         p=q=&A;

  35.         for(i=0;i<n;i++){
  36.                 T=(struct Node *)malloc(sizeof(struct Node));    //每次在链表中添加的新节点
  37.                 p->next=T;
  38.                 p=p->next;
  39.                 p->next=NULL;
  40.         }

  41.         return q;
  42. }                          //创建链表函数原型
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2015-9-20 11:15:22 | 显示全部楼层
没有人帮忙看看吗:sad
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-9-20 18:01:39 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-9-24 20:59:57 | 显示全部楼层
问题很多啊 不知从何讲起
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-9-29 15:12:46 | 显示全部楼层
//创建一个链表并输出

#include<stdio.h>
#include<malloc.h>


typedef struct Node{
        int data;
        struct Node *next;
}Node, *LinkList;                            //定义结构体-节点



void CreatList(int n, LinkList L)
{
        Node *p,*T;
        int i;
        p=L;

        for(i=0;i<n;i++){
                T=(struct Node *)malloc(sizeof(struct Node));    //每次在链表中添加的新节点
                p->next=T;
                p=p->next;
                p->next=NULL;
        }

}                          //创建链表函数原型


int main()
{
        int n;
        int t;
        Node *p, *q;
                LinkList  L;
                L = (LinkList)malloc(sizeof(Node));
        printf("输入要创建的链表长度n:");
        scanf("%d",&n);
        CreatList(n, L);            //创建n+1个节点的链表
        p = q = L;


        printf("输入n个数据到链表:");
        for(p; p->next!=NULL; p = p->next){
                scanf("%d",&t);
                p->next->data=t;
        }                           //读入n个数到链表

        for(q; q->next!=NULL; q = q->next){
                printf("%d  ",q->next->data);
        }

        return 0;
}





这是我改好的程序
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-9-29 15:13:21 | 显示全部楼层
下面说说你犯的错误

首先:
        头节点的设立不能在函数体中,否则函数执行完毕后就会自动删除头节点,所以就无法return头节点地址,所以要在main函数中预先设立头指针,然后将头指针传入create函数。

其次:
        main函数中的数据输入循环和数据打印循环中,自增语句(for语句的最后一个)你写“p++,q++”有什么意义?这是指针,不是整形!!所以正确的写法是p = p->next, q = q->next


最后说一点我自己的习惯:
        写程序最好写在开头,我不习惯写在后面然后在前面声明函数
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-9-29 15:13:54 | 显示全部楼层
打这么多,给我评分,赞啊啊啊!!!!!!!!!!!!!!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-21 05:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表