| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 635 人关注过本帖
标题:[求助]链表里的问题请教一下
只看楼主 加入收藏
zxd198778
Rank: 1
等 级:新手上路
帖 子:99
专家分:0
注 册:2006-7-30
收藏
 问题点数:0 回复次数:8 
[求助]链表里的问题请教一下
链表里面的节点有带头节点的链表也有不带头节点的链表,
怎么建立一个带头节点的链表?
怎么建立一个不带头节点的链表?
能给我他们之间的对比程序并说明一下
我在这里先谢大家了
搜索更多相关主题的帖子: 表里 
2006-10-09 21:30
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 

/*不带头结点的*/
#define NULL 0
#include<malloc.h>
#include <stdio.h>
typedef int datatype;

typedef struct link_node{
datatype info;
struct link_node *next;
}node;
typedef node* nodelink;

nodelink buildlink() /* 尾插法*/
{

datatype x;
nodelink head,s;
nodelink p2;
head=NULL;
p2=NULL;
printf("please input the link:");
scanf("%d",&x);
while(x!=0)
{s=(nodelink)malloc(sizeof(node));
s->info=x;
if (head==NULL) head=s; else p2->next=s;
p2=s;
scanf("%d",&x);
}
if(p2) p2->next=NULL;
return(head);
}

nodelink creatlink() /***头插法***/
{ nodelink head,p;
datatype x;
head=NULL;
printf("please input the link:");
scanf("%d",&x);
while(x!=0)
{ p=(nodelink)malloc(sizeof(node)) ;
p->info=x;
p->next=head;
head=p;
scanf("%d",&x);
}
return head;
}



倚天照海花无数,流水高山心自知。
2006-10-09 22:21
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 

#include<stdio.h>
#define NULL 0
typedef int datatype;

typedef struct hlink{
datatype info;
struct hlink *next;
}node;
typedef node* nodelink;

/* 头插法建立带头节点的单链表*/
nodelink tcreathlink()
{ datatype x;
node *head,*s;
head=(node*)malloc(sizeof(node));
printf("please input the datas:");
scanf("%d",&x);
while(x)
{ s=(node*)malloc(sizeof(node));
s->info=x;
s->next=head->next;
head->next=s;
scanf("%d",&x);
}
return head;
}
nodelink tbuildhlink() /*带头节点的尾插法*/
{

datatype x;
node *head,*s;
node *p2;
head=(node *)malloc(sizeof(node));
p2=head;
printf("please input the datas:");
scanf("%d",&x);
while(x!=0)
{s=(node *)malloc(sizeof(node));
s->info=x;
p2->next=s;
p2=s;
scanf("%d",&x);
}
if(p2) p2->next=NULL;
return(head);
}


倚天照海花无数,流水高山心自知。
2006-10-09 22:21
C语言学习者
Rank: 4
等 级:贵宾
威 望:13
帖 子:1278
专家分:0
注 册:2006-9-26
收藏
得分:0 
我想问版主,是否NULL默认为空指针。

谁有强殖装甲第二部,可以Q我460054868
2006-10-09 23:08
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
NULL不是空指针.它只是一个数.NULL还要定义的,不过好象头文件已经宏定义过了.为0

空类型指针是这样的.
void *p;



定义一个指针如:int *p=NULL //是初始化.p指向空.(未分配空间)

应该是这样吧.

倚天照海花无数,流水高山心自知。
2006-10-09 23:34
zxd198778
Rank: 1
等 级:新手上路
帖 子:99
专家分:0
注 册:2006-7-30
收藏
得分:0 

我想问一下带头节点的在开始时就为他分配连续的内存空间吗?
而不带头节点的就在开始不分配内存空间是这样吗??


我一个不懂世事的人,希望能在这里学到我想学的一些东西。
2006-10-10 16:53
zxd198778
Rank: 1
等 级:新手上路
帖 子:99
专家分:0
注 册:2006-7-30
收藏
得分:0 
谢谢版主给我的这个回答

我一个不懂世事的人,希望能在这里学到我想学的一些东西。
2006-10-10 16:56
unicorn
Rank: 4
等 级:贵宾
威 望:14
帖 子:1066
专家分:0
注 册:2005-10-25
收藏
得分:0 
先明白带头和不带头节点的意思
头指针head不存放数据元素的,一个存放数据元素的指针如果是带头指针链表中的第二个节点,那么它是不带头指针链表的第一个节点

既然带头指针不存放数据元素,带头节点head开始时是没有地址的,它是一个指向指针的指针类型,只有初始化时才为其分配空间

typedef struct Link
{
int data;
struct Link *next;
}Lnode;

//带头节点初始化
void initate(Lnode * *head)
{
*head=(Lnode*)malloc(sizeof(struct Link));
*head->next=NULL;
}

//主函数里
void main()
{
Lnode *head;
initate(&head);//此时头节点才生效,接下来可以分配内存进行插入元素等操作;
Lnode *p==(Lnode*)malloc(sizeof(struct Link));//第二个节点即头指针后插入第一个节点
p->data=10;
p->next=head->next;
head->next=p;
}

//而不带头节点的链表可以直接定义并分配空间与带头节点链表的第二个节点是一样的
//不带头节点的第一个节点为
void main(){
Lnode *p==(Lnode*)malloc(sizeof(struct Link));
p->data=10;
p->next=NULL;

//再插入一个节点
Lnode *q==(Lnode*)malloc(sizeof(struct Link));
q->data=11;
q->next=p->next;
p->next=q;

//当然插入过程应该用循环实现比较方便,偶只是分解一下

}

[此贴子已经被作者于2006-10-10 17:23:26编辑过]


unicorn-h.spaces. ◇◆ sava-scratch.spaces.  noh enol ! pue pu!w hw u! shemle aq ll!m noh 
2006-10-10 17:22
zxd198778
Rank: 1
等 级:新手上路
帖 子:99
专家分:0
注 册:2006-7-30
收藏
得分:0 

那是
我现在对它有那么一点懂了,自己去在想一应该没什么问题把
谢了
版主的基础不错羡慕啊


我一个不懂世事的人,希望能在这里学到我想学的一些东西。
2006-10-12 17:40
快速回复:[求助]链表里的问题请教一下
数据加载中...
 
   



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

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