鱼C论坛

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

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

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

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

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

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

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

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

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

int main()
{
        int n;
        int t;
        struct Node * p,*q;
        printf("输入要创建的链表长度n:");
        scanf("%d",&n);
        p=CreatList(n);            //创建n+1个节点的链表
        q=p;
        
        printf("输入n个数据到链表:");
        for(p;p->next->next!=NULL;p++){
                scanf("%d",&t);
                p->next->data=t;
        }                           //读入n个数到链表

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

        return 0;
}

struct Node * CreatList(int n)
{
        struct Node A;           //链表头结点
        struct Node *p,*q,*T;
        int i;
        p=q=&A;

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

        return q;
}                          //创建链表函数原型
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2015-9-20 11:15:22 | 显示全部楼层
没有人帮忙看看吗:sad
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-9-20 18:01:39 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-9-24 20:59:57 | 显示全部楼层
问题很多啊 不知从何讲起
想知道小甲鱼最近在做啥?请访问 -> 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;
}





这是我改好的程序
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

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


最后说一点我自己的习惯:
        写程序最好写在开头,我不习惯写在后面然后在前面声明函数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-9-29 15:13:54 | 显示全部楼层
打这么多,给我评分,赞啊啊啊!!!!!!!!!!!!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-26 11:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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