速来抢分,今晚10:50之前结贴。[只为提高结帖率而为,:)]

v_JULY_v
博客专家认证
2010-10-20 10:11:12

今晚10:50之前结贴,修正无误,当即结贴送分。:)。


/*
第13题:
题目:
输入一个单向链表,输出该链表中倒数第k个结点,
链表的倒数第0个结点为链表的尾指针。
*/

//此题一出,相信,稍微有点 经验的同志,都会说到:
/*------------------------
设置两个指针p1,p2
首先p1和p2都指向head
然后p2向前走n步,这样p1和p2之间就间隔k个节点
然后p1和p2同时向前步进,当p2到达最后一个节点时,p1就是倒数第k个节点了
-------------------------*/

//July、2010/10/19

//好了,请你指出 下述代码的错误?:
#include <iostream.h>
#include <stdio.h>
#include <stdlib.h>

struct ListNode
{
char data;
ListNode* next;
};
ListNode* head,*p,*q;
ListNode *pone,*ptwo;

int fun(ListNode *head,int k)
{
pone = ptwo = head;
for(int i=0;i<=k;i++)
ptwo=ptwo->next;
while(ptwo!=NULL)
{
pone=pone->next;
ptwo=ptwo->next;
}
return pone->data;
}

int main()
{
char c;
head = (ListNode*)malloc(sizeof(ListNode));
head->next = NULL;
p = head;
c = getchar();
while(c !='0')
{
q = (ListNode*)malloc(sizeof(ListNode));
q->data = c;
q->next = NULL;
p->next = q;
p = p->next;
c = getchar();
}
cout<<"---------------"<<endl;
cout<<fun(head,2)<<endl;

return 0;
}
...全文
251 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
v_JULY_v 2010-10-20
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 wanjiwz 的回复:]
话说你是拿题目玩人来了么?
1. 你没检查链表长度是否不小于k
2. getchar()每次接收一个字符,若输一个字符按一个回车,就把回车也读进去了,除非输入一个序列XXXX0,然后回车
3. 在你的for循环中ptwo超前了k+1个结点,而不是k个,最后输出的是倒数第k+1个结点
4. 输入为字符,fun返回的是int,所以最后输出的是ASCII码
[/Quote]

他说的一点,都没错。:)。
#include <iostream.h>
#include <stdio.h>
#include <stdlib.h>

struct ListNode
{
char data;
ListNode* next;
};
ListNode* head,*p,*q;
ListNode *pone,*ptwo;

ListNode* fun(ListNode *head,int k)
{
pone = ptwo = head;
for(int i=0;i<=k-1;i++)
ptwo=ptwo->next;
while(ptwo!=NULL)
{
pone=pone->next;
ptwo=ptwo->next;
}
return pone;
}

int main()
{
char c;
head = (ListNode*)malloc(sizeof(ListNode));
head->next = NULL;
p = head;
while(c !='0')
{
q = (ListNode*)malloc(sizeof(ListNode));
q->data = c;
q->next = NULL;
p->next = q;
p = p->next;
c = getchar();
}
cout<<"---------------"<<endl;
cout<<fun(head,2)->data<<endl;

return 0;
}

/////////////////////////////
1254863210
---------------
2
Press any key to continue
////////////////////////////
wangguoqing710 2010-10-20
  • 打赏
  • 举报
回复
只求分。。!!
v_JULY_v 2010-10-20
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 aaa20090987 的回复:]
呵呵,接分
[/Quote]

哈哈,你玩来了,一步啊。
下次,再给你,好了。
v_JULY_v 2010-10-20
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 wanjiwz 的回复:]
话说你是拿题目玩人来了么?
1. 你没检查链表长度是否不小于k
2. getchar()每次接收一个字符,若输一个字符按一个回车,就把回车也读进去了,除非输入一个序列XXXX0,然后回车
3. 在你的for循环中ptwo超前了k+1个结点,而不是k个,最后输出的是倒数第k+1个结点
4. 输入为字符,fun返回的是int,所以最后输出的是ASCII码
[/Quote]

有劳这位兄台了。4针,针针见血。:)。

可以,结贴了。
也谢谢wocaoqwer。:)。
v_JULY_v 2010-10-20
  • 打赏
  • 举报
回复
最后,再说下,改成 这样后列?:
推迟5分钟,11:55结贴。 :).
#include <iostream.h>
#include <stdio.h>
#include <stdlib.h>

struct ListNode
{
char data;
ListNode* next;
};
ListNode* head,*p,*q;
ListNode *pone,*ptwo;

ListNode* fun(ListNode *head,int k)
{
pone = ptwo = head;
for(int i=0;i<=k-1;i++)
ptwo=ptwo->next;
while(ptwo!=NULL)
{
pone=pone->next;
ptwo=ptwo->next;
}
return pone;
}

int main()
{
char c;
head = (ListNode*)malloc(sizeof(ListNode));
head->next = NULL;
p = head;
c = getchar();
while(c !='0')
{
q = (ListNode*)malloc(sizeof(ListNode));
q->data = c;
q->next = NULL;
p->next = q;
p = p->next;
c = getchar();
}
cout<<"---------------"<<endl;
cout<<fun(head,2)->data<<endl;

return 0;
}
v_JULY_v 2010-10-20
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 v_july_v 的回复:]
引用楼主 v_july_v 的回复:
今晚10:50之前结贴,修正无误,当即结贴送分。:)。



C/C++ code
/*
第13题:
题目:
输入一个单向链表,输出该链表中倒数第k个结点,
链表的倒数第0个结点为链表的尾指针。
*/

//此题一出,相信,稍微有点 经验的同志,都会说到:
/*------------------------
设置两个指针p1,p……
[/Quote]

静坐,暂不语。
fight_flight 2010-10-20
  • 打赏
  • 举报
回复
初步看代码,head中没有存数据。如果你本来没打算向head中村数据的话,fun函数中条件因改为i<k-1
wanjiwz 2010-10-20
  • 打赏
  • 举报
回复
话说你是拿题目玩人来了么?
1. 你没检查链表长度是否不小于k
2. getchar()每次接收一个字符,若输一个字符按一个回车,就把回车也读进去了,除非输入一个序列XXXX0,然后回车
3. 在你的for循环中ptwo超前了k+1个结点,而不是k个,最后输出的是倒数第k+1个结点
4. 输入为字符,fun返回的是int,所以最后输出的是ASCII码
v_JULY_v 2010-10-20
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 kongzhitai 的回复:]
你这分不值得看
[/Quote]

到底 还是来了,你可以不看。:)
v_JULY_v 2010-10-20
  • 打赏
  • 举报
回复
[Quote=引用楼主 v_july_v 的回复:]
今晚10:50之前结贴,修正无误,当即结贴送分。:)。



C/C++ code
/*
第13题:
题目:
输入一个单向链表,输出该链表中倒数第k个结点,
链表的倒数第0个结点为链表的尾指针。
*/

//此题一出,相信,稍微有点 经验的同志,都会说到:
/*------------------------
设置两个指针p1,p2
首先p1和p2都指向head
然……
[/Quote]

只要,有一人,修正代码,编译无误,得到正确结果后,便当即结贴给分。:)。
kongzhitai 2010-10-20
  • 打赏
  • 举报
回复
你这分不值得看

65,186

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧