| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 576 人关注过本帖
标题:我都不好意思说自己学过链表了,帮我改下好吗?
取消只看楼主 加入收藏
thlgood
Rank: 5Rank: 5
等 级:职业侠客
帖 子:281
专家分:381
注 册:2010-9-24
结帖率:91.43%
收藏
 问题点数:0 回复次数:6 
我都不好意思说自己学过链表了,帮我改下好吗?
程序代码:
#include <stdio.h>
#include <string.h>

#define LENGTH 20

typedef struct SqList
{
    char name[LENGTH];
    struct SqList *next;
}SqList;

/*链表的初始化和输出*/
SqList *InitSqList(SqList *h);
void ShowList(SqList *h);

int main()
{
    SqList *head = NULL;
    head = InitSqList(head);
    ShowList(head);
    return 0;
}

/*链表的初始化*/
SqList *InitSqList(SqList *h)
{
    SqList *p1, *p2;
    p1 = p2 = (SqList *)malloc(sizeof(SqList));
    scanf("%s", p2->name);
    p2 = p2->next;
    while(!strcmp(p2->name, "#"))
    {
        if(h = NULL)
        {
            h = p2;
        }
        else
        {
            p1->next = p2;
        }
        p1 = p2;
        p2 = (SqList*)malloc(sizeof(SqList));
        if(p2 != NULL)
        {
            scanf("%s", p2->name);
            p2 = p2->next;
        }
    }
    p2->next = NULL;
    return h;
}

/*链表的输出*/
void ShowList(SqList *h)
{
    SqList *temp = h;
    while (temp->next != NULL)
    {
        printf("%s\t", temp->name);
        temp = temp->next;
    }
}
搜索更多相关主题的帖子: next color 
2011-04-16 16:28
thlgood
Rank: 5Rank: 5
等 级:职业侠客
帖 子:281
专家分:381
注 册:2010-9-24
收藏
得分:0 
错得很明显,所以这里我就解释错在哪儿了

o(∩∩)Linux & Python 群:187367181
2011-04-16 16:29
thlgood
Rank: 5Rank: 5
等 级:职业侠客
帖 子:281
专家分:381
注 册:2010-9-24
收藏
得分:0 
回复 3楼 hnuhsg1226
谢谢,已经改好了!

o(∩∩)Linux & Python 群:187367181
2011-04-16 17:22
thlgood
Rank: 5Rank: 5
等 级:职业侠客
帖 子:281
专家分:381
注 册:2010-9-24
收藏
得分:0 
程序代码:
/*
========================================================
我又改了下,改成这样子。编译的时候出现了两个警告
警告说temp->next = next和p1->next = p2;出现了
“不兼容的任务分配”
warning: assignment from incompatible pointer type
这是什么原因呢?
但是在typedef struct 后面加上SqList,警告就没了
=======================================================
*/
#include <stdio.h>
#include <stdlib.h>

#define LENGTH 20

typedef struct
{
    char name[LENGTH];
    struct SqList *next;
}SqList;

/*链表的初始化和输出*/
SqList *InitSqList(SqList *h);
void ShowList(SqList *h);

int main()
{
    SqList *head = NULL;
    head = InitSqList(head);
    ShowList(head);
    return 0;
}

/*链表的初始化*/
SqList *InitSqList(SqList *h)
{
    SqList *p1, *p2;
    p1 = p2 = (SqList *)malloc(sizeof(SqList));
    scanf("%s", p2->name);
    getchar();
    p2->next = NULL;
    while(p2->name[0] != '#')
    {
        if(h == NULL)
        {
            h = p2;
        }
        else
        {
            p1->next = p2;
        }
        p1 = p2;
        p2 = (SqList*)malloc(sizeof(SqList));
        if(p2 != NULL)
        {
            scanf("%s", p2->name);
            p2->next = NULL;
        }
    }
    p2->next = NULL;
    return h;
}

/*链表的输出*/
void ShowList(SqList *h)
{
    SqList *temp = h;
    while (temp != NULL)
    {
        printf("%s\n", temp->name);
        temp = temp->next;
    }
}


[ 本帖最后由 thlgood 于 2011-4-16 17:29 编辑 ]

o(∩∩)Linux & Python 群:187367181
2011-04-16 17:27
thlgood
Rank: 5Rank: 5
等 级:职业侠客
帖 子:281
专家分:381
注 册:2010-9-24
收藏
得分:0 
木有人回复啊,自己顶上去

o(∩∩)Linux & Python 群:187367181
2011-04-16 21:07
thlgood
Rank: 5Rank: 5
等 级:职业侠客
帖 子:281
专家分:381
注 册:2010-9-24
收藏
得分:0 
回复 7楼 iFreeBSD
还想请教下:
为什么
while(p2->name[0] != '#')


改成

while (! strcmp (p2->name, "#"))


不行?

o(∩∩)Linux & Python 群:187367181
2011-04-16 21:20
thlgood
Rank: 5Rank: 5
等 级:职业侠客
帖 子:281
专家分:381
注 册:2010-9-24
收藏
得分:0 
回复 9楼 iFreeBSD
饿~~我错了!!

o(∩∩)Linux & Python 群:187367181
2011-04-16 22:06
快速回复:我都不好意思说自己学过链表了,帮我改下好吗?
数据加载中...
 
   



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

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