| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1121 人关注过本帖
标题:[求助]一个链表题目
只看楼主 加入收藏
小家伙2004
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2006-5-19
收藏
 问题点数:0 回复次数:9 
[求助]一个链表题目

小弟初学数据结构,很多算法设计思想都不懂。今天看书,有个题不知道怎样设计算法,请大家帮帮忙。
题目:

设已有一个单循环链表,结点有三个域,pre datanext ,请设计一个算法,把此链表改为一个双向循环
的链表。

搜索更多相关主题的帖子: 链表 
2006-05-19 21:34
SunShining
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:31
帖 子:2215
专家分:0
注 册:2006-2-17
收藏
得分:0 
前提条件是:pree须和 next 一样是指针域.

x=y=head;
while(x->next)
{
x=y->next;
x->pree=y;
y=x;
}

这样应该可以吧

[glow=255,violet,2]闭关修炼ing...[/glow] [FLASH=360,180]http://www./chinaren.swf[/FLASH]
2006-05-20 09:40
小家伙2004
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2006-5-19
收藏
得分:0 

#include<stdio.h>
#include<malloc.h>
typedef struct LNode{
struct LNode *pree;
int data;
struct LNode *next;
}LNode,*List;
void InitList(List &L)
{
L=(List)malloc(sizeof(LNode));
L->pree=0;
L->next=L->pree;
}
void DuList(List L)//改为双向循环链表
{
List x,y;
x=y=L;
while(x->next)
{
x=y->next;
x->pree=y;
y=x;
}
}
void Greate(List &L)
{
L=(List)malloc(sizeof(LNode));
L->pree=0;
L->next=0;
List p,q;q=L;
for(int i=0;i<5;i++)
{
p=(List)malloc(sizeof(LNode));
scanf("%d",&p->data);
p->next=q->pree;
q->next=p->pree;
q=p;
}

}
void main()
{
List L;
InitList(L);
Greate(L);
DuList(L);
for(int i=0;i<5;i++)//正向输出链表
{
printf("%d",L->next->data);
L->next=L->next->pree;
}
for(int j=0;j<5;j++)//反向输出链表
{
printf("%d",L->pree->data);
L->pree=L->pree->next;
}
}
楼上的前辈,能帮我看看那出错了吗?非常感谢

2006-05-20 11:30
SunShining
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:31
帖 子:2215
专家分:0
注 册:2006-2-17
收藏
得分:0 

#include<stdio.h>
#include<malloc.h>
typedef struct LNode{
struct LNode *pree;
int data;
struct LNode *next;
}Node;

Node *DuList(Node *L)
{
Node *x,*y;
x=y=L;
while(x->next)
{
x=y->next;
x->pree=y;
y=x;
}
return(L);
}
main()
{
Node *L=NULL,*p,*q;
int i;

while(1)
{
p=(Node*)malloc(sizeof(Node));
p->pree=p->next=NULL;
scanf("%d",&p->data);
if(p->data==-1) break;
if(L==NULL)
L=q=p;
else
{
q->next=p;
q=p;
}
}
p=L;
while(p)
{
q=p;
printf("%d ",p->data);
p=q->next;

}
L=DuList(L);
printf("\n");
while(q)
{
p=q;
printf("%d ",q->data);
q=q->pree;
free(p);
}
getch();
}

这是我写的.不局限输入5个数..可以输入任意个数.遇到-1结束

[此贴子已经被作者于2006-5-20 13:30:39编辑过]


[glow=255,violet,2]闭关修炼ing...[/glow] [FLASH=360,180]http://www./chinaren.swf[/FLASH]
2006-05-20 13:26
SunShining
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:31
帖 子:2215
专家分:0
注 册:2006-2-17
收藏
得分:0 
typedef struct LNode{
struct LNode *pree;
int data;
struct LNode *next;
}LNode,*List;

void InitList(List &L)

你们都用的什么教材..我很不喜欢这样.而且这样我也不太会用..
我的教材不是这样的..我的编译器也编译不了..所以你的我改不了..不好意思
不过.我给你写的算法没错.我不也用到了~!

[glow=255,violet,2]闭关修炼ing...[/glow] [FLASH=360,180]http://www./chinaren.swf[/FLASH]
2006-05-20 13:28
starrysky
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:华中科技大学EI -T0405
等 级:版主
威 望:11
帖 子:602
专家分:1
注 册:2005-9-12
收藏
得分:0 

错在下面这个函数上
void Greate(List &L)
{
L=(List)malloc(sizeof(LNode));
L->pree=0;
L->next=0;
List p,q;q=L;
for(int i=0;i<5;i++)
{
p=(List)malloc(sizeof(LNode));
scanf("%d",&p->data);
p->next=q->pree;//这两句有严重的问题,假设p->next=r,那么q->pree=r,也就是说p的下一个接点和q的上一个接点都是r,pq根本不相临,中间隔了个r,不能构成链表
q->next=p->pree;//这句和上面一样的问题

q=p;
}
}

上面的函数是用来创建双链表的,按照题目的意思,这个函数是用来创建单链表的,不是双链表.用下面这个函数代替就好了.

void Greate(List &L)
{
L=(List)malloc(sizeof(LNode));
L->pree=0;
L->next=0;
List p,q;q=L;
for(int i=0;i<5;i++)
{
p=(List)malloc(sizeof(LNode));
scanf("%d",&p->data);
q->next=p;
q=p;
}

}

如果要创建双链表,如下

void Greate(List &L)
{
L=(List)malloc(sizeof(LNode));
L->pree=0;
L->next=0;
List p,q;q=L;
for(int i=0;i<5;i++)
{
p=(List)malloc(sizeof(LNode));
scanf("%d",&p->data);
q->next=p;

p->pree=q;

q=p;
}

我的VC出了点问题, 没法调试, 你去试试, 有问题再说.

[此贴子已经被作者于2006-5-20 13:43:24编辑过]


我的征途是星辰大海
2006-05-20 13:42
菜鸟上路
Rank: 4
等 级:贵宾
威 望:14
帖 子:1120
专家分:0
注 册:2006-3-21
收藏
得分:0 
恩,一针见血啊

2006-05-20 13:45
starrysky
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:华中科技大学EI -T0405
等 级:版主
威 望:11
帖 子:602
专家分:1
注 册:2005-9-12
收藏
得分:0 
以下是引用SunShining在2006-5-20 13:28:00的发言:
typedef struct LNode{
struct LNode *pree;
int data;
struct LNode *next;
}LNode,*List;

void InitList(List &L)

你们都用的什么教材..我很不喜欢这样.而且这样我也不太会用..
我的教材不是这样的..我的编译器也编译不了..所以你的我改不了..不好意思
不过.我给你写的算法没错.我不也用到了~!

估计是用严蔚敏版的数据结构,上面的格式都这样


我的征途是星辰大海
2006-05-20 13:49
Uranus
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2006-4-14
收藏
得分:0 

Good!


2006-05-21 19:33
gaobaoqiang
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2006-5-12
收藏
得分:0 
不错
2006-06-11 17:28
快速回复:[求助]一个链表题目
数据加载中...
 
   



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

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