| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1034 人关注过本帖
标题:数据结构有关C的单链表问题
只看楼主 加入收藏
剑飘香
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2011-9-8
结帖率:0
收藏
 问题点数:0 回复次数:6 
数据结构有关C的单链表问题
不知道程序有什么问题,麻烦各位帮忙看看
链表基本操作.rar (577.01 KB)
搜索更多相关主题的帖子: 结构 
2011-09-15 23:38
寒风中的细雨
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:66
帖 子:1710
专家分:8645
注 册:2009-9-15
收藏
得分:0 
程序代码:
#include
#include
typedef struct Node{
    ElemType data;
    struct Node *next;
}Node,*LinkList;
void InitList(LinkList *L){
    *L=(LinkList)malloc(sizeof(Node));
    (*L)->next=NULL;
}
void CreateFromTail(LinkList L){
    Node *r,*s;
    int i,flag=1;
    r=L;
    while(flag){
        scanf("%d",&i);
        if(i!=-1){
            s=(Node*)malloc(sizeof(Node));
            s->data=i;
            r->next=s;
            r=s;
        }
        else{
            flag=0;
            r->next=NULL;
        }
    }
}
void out(LinkList L){
    Node *p;
    while(p!=NULL){
        printf("%d",p->data);
        p=p->next;
    }
}
void main(){
    LinkList *L;
    void InitList(*L);
    void CreateFromTail(L);
    void out(L);
}


主函数 是什么意思  类型不匹配     out缺少 Node *p = L->next;
2011-09-16 08:09
husituo
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2011-9-20
收藏
得分:0 
程序代码:
#include<stdio.h>
#include<stdlib.h>
typedef int ElemType;
typedef struct Node{
    ElemType data;
    struct Node *next;
}Node,*LinkList;

void InitList(LinkList *L){
    *L=(LinkList)malloc(sizeof(Node));
    (*L)->next=NULL;
}

void CreateFromTail(LinkList L){
    Node *r,*s;
    int i,flag=1;
    r=L;
    while(flag){
        scanf("%d",&i);
        if(i!=-1){
            s=(Node*)malloc(sizeof(Node));
            s->data=i;
            r->next=s;
            r=s;
        }
        else{
            flag=0;
            r->next=NULL;
        }
    }
}

void out(LinkList L){
    Node *p = L;
    while(p!=NULL){
        printf("%d",p->data);
        p=p->next;
    }
}

void main(){
    LinkList L;
    InitList(&L);
    CreateFromTail(L);
    out(L);
}


应该是这样吧,兄弟
2011-09-20 13:56
q982004342
Rank: 2
等 级:论坛游民
帖 子:19
专家分:25
注 册:2011-9-9
收藏
得分:0 
程序代码:
#include<stdio.h>
#include<stdlib.h>
#include"malloc.h"
typedef struct Node
{
    int data;
    struct Node *next;
}Node,*LinkList;

LinkList InitList(LinkList L)
{
    L=(LinkList)malloc(sizeof(Node));
    L->next=NULL;
    return L;
   
}

void CreateFromTail(LinkList L)
{
    Node *r,*s;
    int i,flag=1;
    r=L;
    while(flag)
    {
        printf("请输入节点数值:\n");
        scanf("%d",&i);
        if(i!=0)
        {
            s=(Node*)malloc(sizeof(Node));
            s->data=i;
           
            r->next=s;
            r=s;
       
        }
        else
        {
            flag=0;
            r->next=NULL;
        }
    }
}

void out(LinkList L)
{
    Node *p;
    p=L;
    while(p->next!=NULL)
    {
        printf("%d\n",(p->next)->data);
        p=p->next;
    }
}

void main()
{
    LinkList L,p;
    p=InitList(L);
    CreateFromTail(p);
    out(p);
}
看你代码,你应该是想创建一个有头链表,但是你在初始化链表时定义了指向指针的指针,把你自己都弄糊涂了,然后在表结构中data的类型定义没有用define声明,我看你的建表函数中的data是int类型就直接给定义了int型,然后在你创建表函数输入数据的前面加了一个提示语句,还有的改变就是在输出函数中,因为是由头的,不能用p!=null来做判断,因为你下面用p->next来输出时,最后一个数据会出问题的,所以用p->next来做判断就解决了,不信你可以把我的代码改下,试试就知道了!楼上的肯定是会在第一个数据输出那里出问题的,因为链表头数据是空的,系统就会随便给个值输出的!既然是有头的,输出也要改,改为(p->next)-data,要不然在输出最后一个数据时也会出现问题的。好了!我虽改动了你程序,但只是修正!!希望对你有用
2011-09-20 23:46
q982004342
Rank: 2
等 级:论坛游民
帖 子:19
专家分:25
注 册:2011-9-9
收藏
得分:0 
另外把你的数据输入结束标志改为了0,即当输入数据为0时就结束!另给你附上一张测试图
图片附件: 游客没有浏览图片的权限,请 登录注册
2011-09-20 23:51
husituo
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2011-9-20
收藏
得分:0 
回复 5楼 q982004342
谢谢你!
2011-09-21 11:32
boiy3699
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2011-9-22
收藏
得分:0 
偶看不懂。。。。malloc前面括号里的东西怎么一会是Linklist*一会是Node*??
话说我前面这一段有错吗?


程序代码:

#include<stdio.h>
#include<stdlib.h>
typedef int datatype;
typedef struct node
{
    datatype data;
    struct node *next; 
}node,*Linklist;

void InitList(Linklist *head)
{
    Linklist *t;
    t=(node*)malloc(sizeof(node));
    head=t;
    t->next=NULL;
}

void CreateList(Linklist *head)
{
    Linklist *last,*t;
            char ch;
            *t=(node)malloc(sizeof(node));
    head=t;
last=t;
    t->next=NULL;
    while((ch=getchar())!='$')
    {
            *t=(node)malloc(sizeof(node));
            t->data=ch;
            last->next=t;
            last=t;
            t->next=NULL;
    }
}
void display(Linklist*head)
{
    Linklist*t;
if (!(head->next))
    { return NULL;
    }
else  
    {
        t=head;
        while(t->next)
        {
        t=t->next;
        return t;//这边的t返回后什么意思?能显示输出么
        }
    }
}
Linklist*locate(dataType x,Linklist*head)
{
    Linklist*p;
    p=head->next;
    while(p!=NULL)
    if(p->data==x)
    return p;
    else p=p->next;
    return NULL;
}


[ 本帖最后由 boiy3699 于 2011-9-27 23:33 编辑 ]
2011-09-27 23:31
快速回复:数据结构有关C的单链表问题
数据加载中...
 
   



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

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