| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 739 人关注过本帖
标题:[求助]怎么把代码改成不带头结点
只看楼主 加入收藏
zero442
Rank: 1
等 级:新手上路
帖 子:43
专家分:0
注 册:2006-5-26
收藏
 问题点数:0 回复次数:6 
[求助]怎么把代码改成不带头结点
void onlyone(int n)
{
slink *head,*p,*q;
int i,m,k;
p=head=(slink *)malloc(sizeof(slink));
for(i=1;i<=n;i++)
{
q=(slink *)malloc(sizeof(slink));
q->data=i;
p->next=q;
p=q;
}
p->next=head;
p=head;m=0;
while(m<n-1)
{
k=0;
while(k<3)
{
k++;q=p;p=p->next;
if(p==head)
{
q=p;p=p->next;
}
}
q->next=p->next;
free(p);
p=q;
m++;
}
list(head);
}

各位高手帮帮忙啊·小弟最近学习数据结构啊!不大会啊!很多都不懂啊!希望各位帮帮小弟啊!!
在下感激不敬!!
搜索更多相关主题的帖子: 结点 代码 
2007-02-22 21:16
C语言学习者
Rank: 4
等 级:贵宾
威 望:13
帖 子:1278
专家分:0
注 册:2006-9-26
收藏
得分:0 
为什么要想不带头,那q,p是变化。如果你不要头结点,怎样读第一个结点。

谁有强殖装甲第二部,可以Q我460054868
2007-02-22 22:12
C语言学习者
Rank: 4
等 级:贵宾
威 望:13
帖 子:1278
专家分:0
注 册:2006-9-26
收藏
得分:0 
还有这个程序有什么用,而且格式很乱。

谁有强殖装甲第二部,可以Q我460054868
2007-02-22 22:22
zero442
Rank: 1
等 级:新手上路
帖 子:43
专家分:0
注 册:2006-5-26
收藏
得分:0 

这个题目的原题是:由N个已按1,2,3。。。。。,N编号的人围成一圈,从编号为1的人开始按1,2,3顺序循环报数,凡报到3者出圈,最后只留一人,问起编码是多少啊?
题目是以前学C的时候的题啊!可以用链表实现啊!书本上说还可以用不带头结点实现啊!这时我就不懂拉!所以来问问啊!!高手请帮帮我啊!!!我实在想了很久也没有办法啊!


还是不知道怎么会有这样的想法,但是我永远之爱你一个!!
2007-02-23 18:41
磐涅
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2006-11-7
收藏
得分:0 
链表的尾结点指向头结点的next域,构成循环链表吧...

2007-02-23 21:16
zero442
Rank: 1
等 级:新手上路
帖 子:43
专家分:0
注 册:2006-5-26
收藏
得分:0 

是啊!好象是吧!!那要怎么写啊???


还是不知道怎么会有这样的想法,但是我永远之爱你一个!!
2007-02-24 10:49
磐涅
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2006-11-7
收藏
得分:0 

这个行不...

Status Joseph_2(int n,int s,int m) //建立n个结点的无头结点的单链表,从s开始报数,报到第m个人则出列;
{
LinkList L,p,q;
int k,count = 0;
if(n < 1 || s < 1 || m < 1) return ERROR;

if(!(q = (LinkList)malloc(sizeof(LNode)))) return ERROR;
p = L = q;
for(k = 1;k <= n;k++)
{
q->data = k;
q->next = NULL;
p->next = q;
p = p->next;
if(!(q = (LinkListmalloc(sizeof(LNode)))) return ERROR;
}
p->next = L; //构成循环链表;
p = L;

for(k = 1;k < s;k++) p = p->next; //找到s点;

while(count++ < n)
{
for(k = 1;k < m-1;k++) p = p->next; //出列人的前一位
q = p->next; //出列人;

p->next = q->next;
printf("%d 、",q->data);
free(q);
p = p->next;
}
p = q = L = NULL;
return OK;
}


2007-02-24 20:17
快速回复:[求助]怎么把代码改成不带头结点
数据加载中...
 
   



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

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