| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 983 人关注过本帖
标题:关于链表的建立
取消只看楼主 加入收藏
小菜小C
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:70
专家分:111
注 册:2011-3-18
结帖率:75%
收藏
已结贴  问题点数:5 回复次数:11 
关于链表的建立
现在有点疑惑想问一下?
为什么建立链表时只能如下建立,而不能while(p->next!=NULL){p=(struct connection*)malloc(sizeof(struct connection));p=p->next}这样赋值呢??求解??

while(p->next!=NULL)
    {
        s=(struct connection*)malloc(sizeof(struct connection));
        p->next=s;                        //把s的地址赋值给p-next
        printf(":\n");
        scanf("%d",&s->number);
        printf("\n");
        fflush(stdin);
        gets(s->name);
        printf("\n");
        fflush(stdin);
        gets(s->adress);
        printf(":\n");
        fflush(stdin);
        gets(s->tphone);
        printf(":\n");
        fflush(stdin);
        gets(s->qq);
        p=s;
        printf("y/n\n");
        fflush(stdin);
        scanf("%c",&c);
        if(c!='y'&&c!='Y')
        {
            p->next=NULL;
        }
        p=s;                        //把s的地址赋值给p
搜索更多相关主题的帖子: number while 
2011-06-05 21:55
小菜小C
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:70
专家分:111
注 册:2011-3-18
收藏
得分:0 
回复 3楼 qldxsun
然后呢??为什么这样子会建立不起来呢??为什么非要按照建一个新节点再把节点给那个链表呢??

菜鸟一名,准备起飞
2011-06-06 09:33
小菜小C
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:70
专家分:111
注 册:2011-3-18
收藏
得分:0 
回复 4楼 laoyang103
但是我只想知道最基本链表的建立方式,它的原理是什么,他在计算机内的操作是怎么进行的?

菜鸟一名,准备起飞
2011-06-06 09:34
小菜小C
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:70
专家分:111
注 册:2011-3-18
收藏
得分:0 
想现在已经知道链表的建立,谁能告诉我,怎样将文件中的数据输给链表,说方法即可,不必放代码,是用什么函数实现的?

菜鸟一名,准备起飞
2011-06-06 21:49
小菜小C
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:70
专家分:111
注 册:2011-3-18
收藏
得分:0 
回复 10楼 voidx
试过了,不行。。。

菜鸟一名,准备起飞
2011-06-06 22:42
小菜小C
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:70
专家分:111
注 册:2011-3-18
收藏
得分:0 
回复 12楼 voidx
fwrite(p,sizeof(struct connection),1,ps1);//这个是用这个写的
fread(p,sizeof(struct connection),1,ps1);//这个是读的

菜鸟一名,准备起飞
2011-06-07 22:52
小菜小C
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:70
专家分:111
注 册:2011-3-18
收藏
得分:0 
回复 14楼 voidx
没问题,是写到文件里的,但在文件里是一组乱码。而读出的时候也是乱码,老是出现“屯”,一大堆

菜鸟一名,准备起飞
2011-06-08 11:47
小菜小C
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:70
专家分:111
注 册:2011-3-18
收藏
得分:0 
回复 15楼 qldxsun
我链表已建好,但是在存到文件重视用存数据块的方式存储,但存进去后发现存的是一堆乱码,就是“屯”这个东西,读出的时候和这个是一样的

菜鸟一名,准备起飞
2011-06-08 11:49
小菜小C
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:70
专家分:111
注 册:2011-3-18
收藏
得分:0 
回复 19楼 voidx
struct connection *open(FILE *ps1,struct connection *head,struct connection *p)                      //读取历史记录
{
    struct connection *s;
    p=head;
    while(fgetc(ps1)!=EOF)
    {
         s=(struct connection*)malloc(sizeof(struct connection));
         p->next=s;
         fscanf(ps1,"%d%s%s%s%s",&p->number,&p->name,&p->adress,&p->tphone,&p->qq);
         p=s;
    }
    p->next=NULL;
    return head;
}
void os(FILE *ps,FILE *ps1,struct connection *head,struct connection *p)                            //写进文件里
{
    rewind(ps);
    rewind(ps1);
    p=head->next;
    fprintf(ps,"\t****************************************************\n");
    fprintf(ps,"编号\t\t名字\t\t地址\t\t电话或联系方式\t\tQQ号\n");
    while(p!=NULL)
    {
        fprintf(ps1,"%d %s %s %s %s ",p->number,p->name,p->adress,p->tphone,p->qq);               
        fprintf(ps,"%d %18s %18s %18s %18s\n",p->number,p->name,p->adress,p->tphone,p->qq);
        p=p->next;
     }
    fprintf(ps,"******************************************************\n");
    printf("保存成功!\n");
}
void display(struct connection *head,struct connection *p)                            //显示通讯录
{
    p=head->next;
    printf("\t****************************************************\n");
    printf("编号\t\t名字\t\t地址\t\t电话或联系方式\t\tQQ号\n");
    while(p!=NULL)
    {
        printf("%d %18s %18s %18s %18s\n",p->number,p->name,p->adress,p->tphone,p->qq);
        p=p->next;
    }
    if(p==NULL)
    {
        printf("待添加..................\n");
    }
    printf("******************************************************\n");
}
void main()
{
    FILE *ps,*ps1;
    char c;
    if((ps=fopen("通讯录.txt","w+"))==NULL)
    {
         printf("error");
         exit(0);
    }
    printf("是否要导入以前的历史记录: y/n \n");
    fflush(stdin);
    c=getchar();
    if(c=='y')
    {
        printf("成功了!\n");
        if((ps1=fopen("通讯录历史.test","rb+"))==NULL)
        {
            printf("没有记录!\n");
            exit(0);
        }
        int m;
        struct connection *p,*head,*q;
        head=(struct connection*)malloc(sizeof(struct connection));
        head=open(ps1,head,p);
        p=head;
}
不用看后面,看前面的子函数,即使这样实现的存储,使用rb的格式,求解

菜鸟一名,准备起飞
2011-06-08 21:57
小菜小C
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:70
专家分:111
注 册:2011-3-18
收藏
得分:0 
回复 21楼 voidx
现在问题已经解决,虽然不是你这样写的,但还是要谢谢你这么热心,分都给你吧。

菜鸟一名,准备起飞
2011-06-10 17:26
快速回复:关于链表的建立
数据加载中...
 
   



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

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