| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付买域名,送MP3、MP4
高端软件开发 = 年薪十万不是梦赛孚耐:软件保护加密专家身份认证令牌USB KEY买空间,免费送域名(厦门中资源)
共有 289 人关注过本帖
标题:新手求助链表的问题
收藏  订阅  推荐  打印 
广陵绝唱
Rank: 4
等级:高级会员
威望:1
帖子:832
积分:9811
注册:2008-2-15
新手求助链表的问题

我的源程序是这样:
程序代码:
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
struct ST
{
        int i;
        char c;
        struct ST *next;
}*tou,*wei,*yuanshi;
int main(void)
{
        int i=0,j;
        printf("键入‘*’符结束操作,其它健继续:\n");
        while(1)
        {
                printf("%c\n",tou->c=getch());
                if(tou->c=='*')        break;
                while(tou=(struct ST*)malloc(sizeof(struct ST)))
                {
                        if(i==0)
                        {
                                tou=NULL;
                                yuanshi=tou;
                                wei=tou;
                        }
                        else
                        {
                                wei->next=tou;
                                wei=tou;
                        }
                        printf("OK!\n键入‘*’符结束,其它键继续:\n");
                        break;
                }
                tou->i=i;
                i++;
        }
        tou=NULL;
        for(j=0;j<i;j++)
        {
                printf("%5d%5c%5d\n",j,tou->c,tou->i);
                tou=tou->next;
        }
        getch();
}
当我输入a b c d e f *  时,输出却是 b c d e f * ,不知道前面的 a  弄哪去了,怎么修改?还望各位帮下忙,谢谢。

    再说几句题外话,近段时间太忙,每天高强度工作达十多个小时之久,所以把C的学习耽误了。但还是尽量抽出时间来学习,所以请朋友们不必拿我开涮,说我是“大个儿的牛”,大家就拿我当才学二个月的新手来对待就可以了(其实我也就是这个水平)。谢谢大家。
搜索更多相关主题的帖子: 链表  
2008-8-1 22:34
广陵绝唱
Rank: 4
等级:高级会员
威望:1
帖子:832
积分:9811
注册:2008-2-15

请各位高手们指点迷津,谢谢。
2008-8-2 22:22
ONEPROBLEM
Rank: 12Rank: 12Rank: 12
来自:编程中国
等级:版主
威望:8
帖子:1381
积分:12632
注册:2008-7-11

牛哥,小菜帮你顶起来!
2008-8-2 22:28
Rand
Rank: 2
等级:注册会员
帖子:49
积分:664
注册:2008-7-2

第一次进去的时候tou只是个指针,没有开辟内存空间,赋值到tou->c是不可能的。
我奇怪的是为什么你编译器不会出错,还能运行。
2008-8-3 00:19
Rand
Rank: 2
等级:注册会员
帖子:49
积分:664
注册:2008-7-2

你i=0的初始化也将tou重定向到了一个空地址,就算前面记下了也没用
2008-8-3 00:36
广陵绝唱
Rank: 4
等级:高级会员
威望:1
帖子:832
积分:9811
注册:2008-2-15
谢谢Rand朋友的帮助

已把程序更改,在申请内存之后再赋值,已解决。谢谢。

编译器是WIN-TC,有点古老了,不过用着顺手,先将就着吧。

再次表示感谢,谢谢你了。
2008-8-3 01:23
Rand
Rank: 2
等级:注册会员
帖子:49
积分:664
注册:2008-7-2

不用客气,不过你初始化将tou重定位了,a还是没有吧?
2008-8-3 01:39
广陵绝唱
Rank: 4
等级:高级会员
威望:1
帖子:832
积分:9811
注册:2008-2-15

有了,我先定义个字符变量 C ,然后用getch()为 C 赋值,再通过 tou->c=c;来为它赋值。

    现在问题已经解决,a已经出现,不过最后的*却没了。不过我想通过自己的努力,可以出现的,谢谢。
2008-8-3 01:46
死了都要C
Rank: 12Rank: 12Rank: 12
来自:四川成都
等级:贵宾
威望:13
帖子:1507
积分:15568
注册:2006-12-7

广````换个IDE吧``

女施主``我给你``送茶来了```师太``你就从了老衲吧``
代码本天成~~~妙头偶得之```
http://yzfy.org
2008-8-3 02:15
ONEPROBLEM
Rank: 12Rank: 12Rank: 12
来自:编程中国
等级:版主
威望:8
帖子:1381
积分:12632
注册:2008-7-11

Rand 在 2008-8-3 00:19 的发言:

第一次进去的时候tou只是个指针,没有开辟内存空间,赋值到tou->c是不可能的。
我奇怪的是为什么你编译器不会出错,还能运行。
呵呵~~说得好。我也学习了。
以前我总想:在链表中,头指针到底有没有自己的数据域呢?
现在明白了:没有!
比如,在单链的尾插入法中,就需要一个头指针指向第一个结点,还需要一个尾指针记录最后一个结点(以方便从尾部插入)。假如,这头指针和尾指针都有自己的数据域,那问题就大了。
2008-8-3 08:07
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.054222 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved