首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • C链表问题 [已结帖,结帖人:sunnyes2008]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • sunnyes2008
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 结帖率:
    发表于:2008-08-18 16:40:29 楼主
    题目是创建一个链表,只写出主要部分。
    int i;
    s=(NODE*)malloc(sizeof(NODE));
    h=s;
    p=s;
    for(i=1;i <n;i++)
    {
      s=(NODE*)malloc(sizeof(NODE));
    s->data=rand()%m;
    s->next=p->next;
    p->next=s;
    p=p->next;
    }
    NODE是一个结构体有data和next成员,我看不懂那个循环语句,哪位高手帮忙解释下。
    p开始是头节点,s是刚创建节点.s->next=p->next;有点看不懂/。它是怎么连接的?
    15  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • youfengdetianqi
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-18 16:50:141楼 得分:0
    SOFA  MARK
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ww2734
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-18 16:51:232楼 得分:5
    int i;
    s=(NODE*)malloc(sizeof(NODE));
    h=s;
    p=s;
    for(i=1;i <n;i++)
    {
      s=(NODE*)malloc(sizeof(NODE)); //为新的节点开辟空间
    s->data=rand()%m; //赋值语句,没啥好说的
    s->next=p->next; //这句和下一句你要自己画个图了,考虑向链表插入节点的方法
    p->next=s;
    p=p->next; //这是做循环用的
    }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • jillnicky
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-18 16:52:313楼 得分:5
    用笔在纸上画画就明白了!~
    C/C++ code
    int i; s=(NODE*)malloc(sizeof(NODE)); h=s; p=s; for(i=1;i <n;i++) /* 申请n个结点,顺序连接,头指针h尾指针p */ { s=(NODE*)malloc(sizeof(NODE)); /* 申请空间 */ s->data=rand()%m; /* 为结构体s的data赋值----1~m之间的随机数,s应该是个结构体*/ s->next=p->next; /* 结构体s中的指针next与p中的next指向相同 */ p->next=s; /* p中的next指向结构体s */ p=p->next; /* p指向p的下一个结点 */ }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • wienee
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-18 16:56:124楼 得分:0
    s->next=p->next;  //设置s->next 为尾节点的next,即null
    p->next=s; //设置尾节点的next为刚刚创建的新节点
    p=p->next; //设置p为刚刚创建的新节点,即使它成为新的尾节点
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • youfengdetianqi
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-18 17:01:395楼 得分:5
    哦 这个循环的总的意思是说建立一个有N个结点的 带头结点的链表
    我觉得 那个h是用来指向头结点 当这个链表的头指针用的!
          那个p是用来标记当前结点
          那个S是用来标记将插入的新结点,这个结点要插入在当前结点的后面,做当前结点的后继
    C/C++ code
    for(i=1;i <n;i++){ s=(NODE*)malloc(sizeof(NODE)); //新建一个结点 s->data=rand()%m; //给这个新结点的数据域赋值 s->next=p->next; //让这个结点的后继指向当前结点的下一个结点(在创建链表的时候 这个是NULL) p->next=s; //使新节点成为当前结点的后继 p=p->next; //使新节点成为当前结点 }

    总得来讲 我的链表部分 基本是通过画图来理解的 建议LZ 不要LAZY 拿笔画一画 就很快清楚了~
    以后熟悉了 就不用画了!
    CSDN 恢复  祝我开心!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • dahua010
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-18 17:07:476楼 得分:0
    有时间的话看看 基础 《数据结构》吧.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • juwell0512
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-18 17:13:297楼 得分:0
    C++ Primer是本好书~~~多看看
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • dding_inshili
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-18 18:57:088楼 得分:0
    这位兄弟, 你可以画一下节点的逻辑结构就ok了啊!!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • realdragon2
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-18 19:51:029楼 得分:0
    引用 5 楼 youfengdetianqi 的回复:
    哦 这个循环的总的意思是说建立一个有N个结点的 带头结点的链表
    我觉得 那个h是用来指向头结点 当这个链表的头指针用的!
          那个p是用来标记当前结点
          那个S是用来标记将插入的新结点,这个结点要插入在当前结点的后面,做当前结点的后继

    C/C++ codefor(i=1;i <n;i++){
        s=(NODE*)malloc(sizeof(NODE)); //新建一个结点
        s->data=rand()%m; //给这个新结点的数据域赋值
        s->next=p->next; //让这…
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved