QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1088|回复: 6

带有头节点的链表问题

[复制链接]
发表于 2004-3-16 13:40:02 | 显示全部楼层 |阅读模式
我正学数据结构,遇到些问题,希望各位不吝赐教,谢谢!!
我们的教科书上没有关于带头节点的链表的具体算法,我自己写了一个,应该
有不少问题(只给出初始化链表的函数,请大家修改):
[code:1]
typedef struct LinkList
{
   char data;
   struct LinkList *next;
}LNode,*LinkList;                 //节点结构体

LinkList init_LinkList()
{
  LNode *s,*h,*r=NULL;       //h头节点 r尾节点
  LinkList L=h;                     
  int i,k=0;
  for(i==0;i<=5;i++)
  {s=(LNode *)malloc(sizeof(LNode));
   putchar(s->data);
  if(k==0)
   {h->next=s;k++;}
  else
    {r->next=s;
      r=s;
     }
return L;
}
[/code:1]



另外,还想问LinkList L 和 LNode *L有什么区别?
GCC提供NULL了吗?
发表于 2004-3-16 23:13:32 | 显示全部楼层
好象NULL是一个宏,在一个头文件里有定义
好象是stddef.h
回复

使用道具 举报

 楼主| 发表于 2004-3-17 12:22:52 | 显示全部楼层
谢了斑竹

难道我的代码写的无懈可击?
没什么地方可以修改了?或者提些建议也行啊!
回复

使用道具 举报

发表于 2004-3-17 13:21:17 | 显示全部楼层
恩...我不太理解你所说的“带头节点的链表”是指什么样的链表
说实话,你的代码的书写风格不利于阅读~
我先说说关于链表的思路吧,一个链表的作用就是保存和组织一些数据或信息,保存数据或信息的功能是通过链表中的每个节点来完成的,而对信息的组织则是通过每个节点的数据结构和链表中各个节点的联系来体现的。
其实一个链表一般都会有一个头节点的呀,第一个节点不就是头节点吗?除了空链表,哪个链表会没有这第一个节点呢?
其实要理解链表,通过图形可以更形象一点,我想一般的数据结构的书上都会有的吧。
其实关于链表的算法,无非就是这样几种:
1。创建链表,也就是不停地创建新节点并把新节点按照某种规则加入到链表中(这里的规则比如可以是每个新节点都加入到链表尾部,或者每个新节点都加入到链表头部等)
2。对链表的操作,无非就是在遍历链表的过程中对每一个节点(或某个特定的节点)进行操作,当然有些事可能需要多次遍历链表
3。销毁链表,也就是把链表中的每一个节点都销毁
回复

使用道具 举报

 楼主| 发表于 2004-3-22 13:37:02 | 显示全部楼层
昨天,仔细看了教材,已经完全明白了
这是我重新写的代码:
[code:1]
LinkList Creat_LinkList(LinkList L,int n)
{
        LNode *s;
        L=(LinkList)malloc(sizeof(LNode));
        L->next=NULL;
        L->data=0;
        for(n;n=0;--n){
                s=(LinkList)malloc(sizeof(LNode));
                scanf("%d",&s->data);
                s->next=L->next;L->next=s;          /*tou cha*/
                (L->data)++;}
        return L;
}

[/code:1]

还比较好吧?
嘿嘿,再提提意见
回复

使用道具 举报

发表于 2004-3-23 03:27:31 | 显示全部楼层
思路应该没什么问题,不过你这个做的在我印象里和教材上思路不一样。建立一个空的链表,置空,然后添加。不是很明白你的意图。照理如果是init的话应该是先建立一个 空表再说。在kernel里有一个链表实现,可以看看,那个代码写的。。。。。呵呵。
回复

使用道具 举报

 楼主| 发表于 2004-3-24 11:52:31 | 显示全部楼层
有吗

我回去好好看看
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-8 19:38 , Processed in 0.068095 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表