CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

带头结点的单链表逆置程序

楼主qinyuanfeng(沁园枫)2006-02-02 13:13:38 在 C/C++ / C语言 提问

我写了一个带头结点的单链表逆置程序,程序的执行结果没什么问题,只是要高手指点一下我写的代码有没有哪里不规范的地方?  
   
  /****************************************************************  
  *     文件名:nz.c       (nz就是逆置!)  
  *     文件描述:带头结点的单链表逆置  
  *     创建人:沁园枫  
  *     创建时间:2006年2月2日  
  ****************************************************************/  
  #include   "stdio.h"  
   
  typedef   struct   Dlb       /*单链表结点*/  
  {  
    int   data;                       /*数据域*/  
    struct   Dlb   *link;       /*指针域*/  
  }Dlb;  
   
  void   main()                     /*主函数*/  
  {  
    Dlb   *xjlb();                 /*声明xjlb(新建链表)函数*/  
    Dlb   *nzlb(Dlb   *);       /*声明nzlb(逆置链表)函数*/  
    Dlb   *h,*p;  
    h=xjlb();                       /*调用xjlb(新建链表)函数*/  
    p=h;  
    while(p->link!=NULL)/*输出新建单链表后的各元素*/  
    {  
      printf("%d",p->link->data);  
      p=p->link;  
    }  
    printf("\n");  
    h=nzlb(h);                     /*调用nzlb(逆置链表)函数*/  
    while(h->link!=NULL)/*输出逆置后的单链表各元素*/  
    {  
      printf("%d",h->link->data);  
      h=h->link;  
    }  
    getch();                         /*调用getch函数,不知道什么意思的自己查查!*/  
  }  
   
  Dlb   *xjlb()                     /*新建链表函数*/  
  {  
    Dlb   *h,*l,*a;  
    int   i;  
    h=(Dlb   *)malloc(sizeof(Dlb));  
    h->link=NULL;  
    a=h;  
    for(i=0;i<5;i++)  
    {  
      l=(Dlb   *)malloc(sizeof(Dlb));  
      l->data=i;  
      a->link=l;  
      a=a->link;  
    }  
    a->link=NULL;  
    return   h;  
  }  
   
  Dlb   *nzlb(Dlb   *h)         /*逆置链表函数*/  
  {  
    Dlb   *p,*q;  
    p=h->link;  
    h->link=NULL;  
    while(p!=NULL)  
    {  
      q=p;  
      p=p->link;  
      q->link=h->link;  
      h->link=q;  
    }  
    return   h;  
  }  
  问题点数:80、回复次数:11Top

1 楼striker_un(徐兴)回复于 2006-02-02 16:57:38 得分 30

先注意。编码规范。  
  =号两边加个空格。  
  程序是给人看的。Top

2 楼qinyuanfeng(沁园枫)回复于 2006-02-02 22:15:16 得分 0

谢谢楼上的指点!我以后会注意的!Top

3 楼lbiori241(残阳东升)回复于 2006-02-02 23:00:39 得分 0

头结点的数据域为什么空着?Top

4 楼qinyuanfeng(沁园枫)回复于 2006-02-03 10:54:55 得分 0

请教楼上——头结点的数据域该放什么?Top

5 楼lbiori241(残阳东升)回复于 2006-02-03 13:40:48 得分 0

头节点只不过是由头指针指着的一个节点而已,其数据域可以和其他节点一样存放数据阿  
  你比如说,从你的初始化函数来看,数据域放的是递增的自然数,头节点可以在开辟的时候就可以head->data   =   0;然后后面只用开辟三个节点分别for(i=1;i<4;i++)就行了,这样比你上面的节省一个节点Top

6 楼qinyuanfeng(沁园枫)回复于 2006-02-03 17:04:32 得分 0

楼上的方法其实我也知道的,只是数据结构书上说设置一个头结点(这个结点的数据域为空),是为了让指针的改变更方便……Top

7 楼du51(郁郁思扬)回复于 2006-02-03 17:19:35 得分 0

可以放长度之类的.当然也无所谓.Top

8 楼windspeaker()()回复于 2006-02-03 21:18:21 得分 20

注释用英文会好点,   最起码不用来回切换输入法.Top

9 楼qinyuanfeng(沁园枫)回复于 2006-02-03 21:38:06 得分 0

谢谢楼上2位的提醒——我会把英语学好的……Top

10 楼direstrait(明天不是猪)回复于 2006-02-03 22:56:02 得分 30

函数名不要使用拼音所写,比如xjlb可以为NewList,nzlb可以为ReverseListTop

11 楼qinyuanfeng(沁园枫)回复于 2006-02-04 10:29:30 得分 0

回楼上的,我也想不用拼音的,可是——哎,努力学习英语中……Top

相关问题

  • 单链表(带头结点)如何进行冒泡排序?
  • 菜鸟问题:写出在链表某个结点前面插入一个结点的程序。
  • SOS,请帮我改一下程序,是链表的异质结点,拜托了
  • 链表删除结点的问题:大伙帮我看看这个程序小问题。
  • 求救有关链表的创建和按照小到大的排序,插入结点保序的程序有问题,高手帮忙解决一下哈
  • 怎样取得链表的头结点?
  • 删除双链表的一个结点?
  • TreeView如何在程序中选中一个结点呢?
  • 怎样用程序实现在TreeView控件中添加根结点和子结点?
  • 如何在程序中得到Treeview被选择的结点的层次数???

关键词

  • 结点
  • 函数
  • 节点
  • 数据
  • null
  • dlb
  • 链表
  • nzlb
  • xjlb
  • 逆置

得分解答快速导航

  • 帖主:qinyuanfeng
  • striker_un
  • windspeaker
  • direstrait

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo