| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 879 人关注过本帖
标题:新人求教!简单链式线性表的建立
只看楼主 加入收藏
hf201089
Rank: 2
等 级:论坛游民
帖 子:48
专家分:25
注 册:2012-3-4
结帖率:100%
收藏
已结贴  问题点数:5 回复次数:7 
新人求教!简单链式线性表的建立
#include <stdio.h>
#include <stdlib.h>

struct L{
    int data;                //链表数据
    struct L* next;        //链表指针
};

/*头插法-建立单链表*/
L crt(L *la,int d)
{   
    int count=0;
    L *head;
    la=(L*)malloc(sizeof(L));                        //建立头结点
    head=la;
    la->next=NULL;   
    while(count!=d)
    {
        L *p=(L*)malloc(sizeof(L));
        p->next=la->next;
        la->next=p;
        scanf("%d",&p->data);
        count++;
    }   
    return *head;
}

int main()
{
    int num;
    L *la,*h;
    scanf("%d",&num);
    *h=crt(la,num);
    for(int i=0;i<num;i++)
    {
        printf("%d",(h+i)->data);
        printf("\n");
    }
    printf("\n");
}
新人第一次提问哈,希望大大们解答。
代码大概就是建立一个链式线性表然后一次输出,问题是输出的不是原来输入的数据。
还有一个问题是这段代码在VS2010中不能运行,但在C-FREE4.0可以,这是为什么?
搜索更多相关主题的帖子: next head include return 线性表 
2012-03-04 11:10
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:5 
struct L{
    int data;                //链表数据
    struct L* next;        //链表指针
};
应该改写成
typedef struct L{
    int data;                //链表数据
    struct L* next;        //链表指针
}L;

不然你下面的L要全部换成 struct L;

L crt(L *la,int d)
要写成 L *crt(L *la,int d) 是为指针函数,返回值是个指向结构体的指针(一个地址)。

return *head; 应该是 return head; 返回的才是地址。

*h=crt(la,num); 也要去掉*

 L *la,*h;
    scanf("%d",&num);
    *h=crt(la,num);
la 没有初始化,你的程序会出现问题。




[ 本帖最后由 有容就大 于 2012-3-4 11:54 编辑 ]

梅尚程荀
马谭杨奚







                                                       
2012-03-04 11:49
hf201089
Rank: 2
等 级:论坛游民
帖 子:48
专家分:25
注 册:2012-3-4
收藏
得分:0 
我按照2楼大大的说法把L *h的问题都改了 并把*La移到crt中
代码如下
#include <stdio.h>
#include <stdlib.h>

typedef struct L{
    int data;                //链表数据
    struct L* next;        //链表指针
}L;

/*头插法-建立单链表*/
L crt(int d)
{   
    int count=0;
    L *head,*la;
    la=(L*)malloc(sizeof(L));                        //建立头结点
    head=la;
    la->next=NULL;   
    while(count!=d)
    {
        L *p=(L*)malloc(sizeof(L));
        p->next=la->next;
        la->next=p;
        scanf("%d",&p->data);
        count++;
    }   
    return head;
}

int main()
{
    int num;
    L *h;
    scanf("%d",&num);
    h=crt(num);
    for(int i=0;i<num;i++)
    {
        printf("%d",(h+i)->data);
        printf("\n");
    }
    printf("\n");
}
但还是报错
未命名1.cpp:25: conversion from `L *' to non-scalar type `L' requested
未命名1.cpp:33: cannot convert `L()' from type `L' to type `L *'
2012-03-04 12:06
hf201089
Rank: 2
等 级:论坛游民
帖 子:48
专家分:25
注 册:2012-3-4
收藏
得分:0 
我3楼自己漏了函数类型忘了加*
但是按照2楼改后是没有错误了但是结果还是不对。
谁还能帮忙解答下吗?
2012-03-04 12:44
天天涯涯
Rank: 4
等 级:业余侠客
帖 子:215
专家分:267
注 册:2011-10-17
收藏
得分:0 
p->next=la->next;
        la->next=p;感觉你这两句有问题。
2012-03-04 13:34
hf201089
Rank: 2
等 级:论坛游民
帖 子:48
专家分:25
注 册:2012-3-4
收藏
得分:0 
回复 5楼 天天涯涯
这是链式线性表的头接入法的赋值语句呀
应该不会错的
2012-03-04 13:53
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
程序代码:
#include <stdio.h>
#include <stdlib.h>

typedef struct L{
    int data;                //链表数据
    struct L* next;        //链表指针
}L;

/*头插法-建立单链表*/
L *crt(int d)
{   
    int count=0;
    L *head,*la;
    L *p=(L*)malloc(sizeof(L));   // 头结点也给个值
    scanf("%d",&p->data);
    head = la = p;
    while(count < d - 1)
    {       
        L *p=(L*)malloc(sizeof(L));   
        scanf("%d",&p->data);
        la -> next = p;            // 注意这里的连接方式
        la = p;                    
        count++;
    }   
    return head;
}

int main()
{
    int num;
    int i;
    L *h;
    scanf("%d",&num);
    h=crt(num);
    for(i =0;i<num;i++)
    {
        printf("%d",h->data);
        h = h -> next;         // 不是个(h + i)就能输出链表的
        printf("\n");
    }
   return 0;
}

梅尚程荀
马谭杨奚







                                                       
2012-03-04 16:26
hf201089
Rank: 2
等 级:论坛游民
帖 子:48
专家分:25
注 册:2012-3-4
收藏
得分:0 
回复 7楼 有容就大
非常感谢!
2012-03-04 17:09
快速回复:新人求教!简单链式线性表的建立
数据加载中...
 
   



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

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