| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 726 人关注过本帖
标题:一个结构体的问题
只看楼主 加入收藏
大C
Rank: 1
等 级:新手上路
帖 子:20
专家分:2
注 册:2012-12-9
结帖率:80%
收藏
已结贴  问题点数:15 回复次数:8 
一个结构体的问题
typedef struct LNode
{int data;  

 struct LNode *next;

}LNode,*LinkList;  //这个结构体中LNode,*LinkList用法有不同,代表的什么意思!求大神解答,代码没打全,应该不影响吧!
哪位大神帮忙解答下面的程序问题啊,万分感谢!
#include<stdio.h>
 #include<malloc.h>
 typedef char datatype;
 typedef struct List{
 datatype data;
 struct List *next;
 };
 Create(struct List *head)//尾插法建立链表 *head建立头指针
{
struct List *p,*r;//节点指针
datatype d;
 head=NULL;
 p=NULL;
 printf("输入字符(结束符号:#):");
while(d=getchar()!='#')
 {
 p=(struct List*)malloc(sizeof(struct List));
 p->data=d;
 if(head==NULL)
 head=p;
 else
 r->next=p;
 r=p;
 }
 if(r!=NULL)
 r->next=NULL;
 return head;
 }
 void Printf_L(struct List *p) //打印链表
{
while(p!=NULL)
 {printf("%c ",p->data );
 p=p->next;
 }

 }
 main()
 {
 struct List *La;
 Create(La);
 Printf_L(La);


 } //程序运行没有错误,但总是 无法打印,实在找不出错在哪里!

[ 本帖最后由 大C 于 2013-10-4 13:23 编辑 ]
搜索更多相关主题的帖子: include Create 结构体 影响 
2013-10-03 17:15
Explorerlxz
Rank: 9Rank: 9Rank: 9
来 自:zzu
等 级:蜘蛛侠
威 望:4
帖 子:302
专家分:1032
注 册:2013-4-24
收藏
得分:3 
LNode代表上面所定义的结构体类型,可以用于定义结构体!
LinkList代表结构体指针类型,指向上面所定义的结构体,可用于定义结构体指针在引用结构体的内容时可以用到!
2013-10-03 17:34
大C
Rank: 1
等 级:新手上路
帖 子:20
专家分:2
注 册:2012-12-9
收藏
得分:0 
回复 2楼 Explorerlxz
//听了您的话后我建立了个简单的链表,但总是无法打印不知道错在哪里。能帮我看看么?谢谢了
#include<stdio.h>
#include<malloc.h>
typedef char datatype;
typedef struct List{
datatype data;
struct List *next;
};
Create(struct List *head)//尾插法建立链表 *head建立头指针
{
struct List *p,*r;//节点指针
datatype d;
head=NULL;
p=NULL;
printf("输入字符(结束符号:#):");
while(d=getchar()!='#')
{
p=(struct List*)malloc(sizeof(struct List));
p->data=d;
if(head==NULL)
head=p;
else
r->next=p;
r=p;
}
if(r!=NULL)
r->next=NULL;
return head;
}
void Printf_L(struct List *p) //打印链表
{
while(p!=NULL)
{printf("%c ",p->data );
 p=p->next;
}

 }
main()
{
struct List *La;
Create(La);
Printf_L(La);


}
2013-10-03 18:04
baobaoisme
Rank: 7Rank: 7Rank: 7
来 自:AVATAR
等 级:黑侠
帖 子:260
专家分:506
注 册:2010-7-9
收藏
得分:7 
Create(La);对La根本没有改变,又谈何输出呢?c语言本质上在传递实参给形参的时候全部都是值传递的形式,你修改的只是形参的地址,即Create(struct List *head)中head的地址,而head本质上跟La是两个不同的变量,so你的Create(La);应该改为La=Create(La);其次,你传递La给Create函数完全没有意义,可以把这个参数取消了,Create可以作为一个无参函数最终返回建立的链表头部指针给La即可。
2013-10-04 17:19
大C
Rank: 1
等 级:新手上路
帖 子:20
专家分:2
注 册:2012-12-9
收藏
得分:0 
回复 4楼 baobaoisme
学习了,非常感谢!可是我改了之后发现输出的不知道是什么东西,好像笑脸!这又是为什么呢?
2013-10-04 22:40
qunxingw
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:24
帖 子:1676
专家分:7295
注 册:2011-6-30
收藏
得分:0 
#include<stdio.h>
#include<malloc.h>

typedef struct List_Node{
    int info;
    struct List_Node *next;
  }node;//结点结构体

/******************************/
/* 尾插法建立带头结点的单链表 */
/******************************/
node* Creat_Node()
{
    node *head,*pre,*p;
    int x;
    head=(node*)malloc(sizeof(node));;
    head->next=NULL;
    pre=head;
    printf("输入各结点的值,以0结束:");
    while(EOF!=(scanf("%d",&x))&&x!=0)
    {
        p=(node*)malloc(sizeof(node));
        p->info=x;
        p->next=pre->next;
        pre->next=p;
        pre=pre->next;
    }
    return head;
}

/******************************/
/* 头插法建立带头结点的单链表 */
/******************************/
node* Build_Node()
{
    node *head,*p;
    int x;
    head=(node*)malloc(sizeof(node));;
    head->next=NULL;
    printf("输入各结点的值,以0结束:");
    while(EOF!=(scanf("%d",&x))&&x!=0)
    {
        p=(node*)malloc(sizeof(node));
        p->info=x;
        p->next=head->next;
        head->next=p;
    }
    return head;
}


/******************************/
/*         打印单链表         */
/******************************/

void Print_Node(node *head)
{
    node *p=head->next;
    printf("输出该链表:");
    while(p)
    {
        printf("%-5d--->",p->info);
        p=p->next;
    }
    if(p==NULL)
    {
        printf("^\n\n\n");
    }
}

 

#include"Head_Node.h"

int Count_Node(node *head)
{
    node *p=head->next;
    int num=0;
    while(p!=NULL)
    {
        num++;
        p=p->next;
    }
    return num;
}

int main()
{
    node *head;
    head=Creat_Node();
    Print_Node(head);
    printf("结点个数为:%d\n",Count_Node(head));
    return 0;
}

www.qunxingw.wang
2013-10-05 09:16
qunxingw
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:24
帖 子:1676
专家分:7295
注 册:2011-6-30
收藏
得分:0 
以上来自本坛文档资料

www.qunxingw.wang
2013-10-05 09:17
Explorerlxz
Rank: 9Rank: 9Rank: 9
来 自:zzu
等 级:蜘蛛侠
威 望:4
帖 子:302
专家分:1032
注 册:2013-4-24
收藏
得分:5 
程序代码:
#include
#include
typedef char datatype;
typedef struct List
{
    datatype data;
    struct List * next;
};
struct List *Create()
{
    struct List *head,*p,*r;
    datatype d;
    head=NULL;
    printf("输入字符(结束符号:#):");
    p=r=(struct List*)malloc(sizeof(struct List));
    while((d=getchar())!='#')
    {

        p->data=d;
        if(head==NULL)
            head=p;
        else
            r->next=p;
        r=p;
        p=(struct List*)malloc(sizeof(struct List));
    }
    if(r!=NULL)
        r->next=NULL;
    return head;
}

void Printf_L(struct List *p)
{
    while(p!=NULL)
    {
        printf("%c ",p->data );
        p=p->next;
    }
}

int main()
{
    struct List *La;
    La=Create();
    Printf_L(La);
    return 0;
}
2013-10-05 09:19
大C
Rank: 1
等 级:新手上路
帖 子:20
专家分:2
注 册:2012-12-9
收藏
得分:0 
非常感谢各位大大,真的学习了!真诚的感谢
2013-10-05 17:02
快速回复:一个结构体的问题
数据加载中...
 
   



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

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