首页 新闻 会员 周边 捐助

请问谁知道为什么这个单链表查找倒数第N个数输出结果会是这样的啊??后天就要交作业。。急等急等。。拜托

0
悬赏园豆:30 [待解决问题]

单链表快速查找倒数第N个数??

#include<iostream>
#include<cstdlib>
#include<ctime>
using namespace std;
typedef int Status;
typedef int ElemType;
typedef struct Node{
ElemType data;
struct Node *next;
}Node;
typedef struct Node *LinkList;
void Create(LinkList *L, int n)
{
LinkList p;
int i;
srand(time(0));
*L = (LinkList)malloc(sizeof(Node));
(*L)->next = NULL;
for (i = 0; i < n; i++)
{
p = (LinkList)malloc(sizeof(Node));
p->data = rand() % 100 + 1;
p->next = (*L)->next;
(*L)->next = p;
}
}
void ListPrint(LinkList L){
while (L != NULL){
cout << L->data << " ";
L = L->next;

}
}
Status GetNthNodeFromBcak(LinkList L, int n, ElemType *e){
int i = 0;
LinkList FirstNode = L;
LinkList SecondNode = L;
while (i < n && FirstNode->next != NULL){
i++;
FirstNode = FirstNode->next;
cout << i;
}
if (FirstNode == NULL && i < n - 1){
cout << "超出链表长度" << endl;
return 0;
}
while (FirstNode != NULL){
SecondNode = SecondNode->next;
FirstNode = FirstNode->next;
}
*e = SecondNode->data;
return 1;
}
int main(){
LinkList L;
int N;
cout << "请输入N:";
cin >> N;
ElemType e;
Create(&L, 9);
ListPrint(L);
cout << endl;
GetNthNodeFromBcak(L, N, &e);
cout<<"倒数第" << N << "个数是" << e << endl;
system("pause");
return 0;
}

稻北的主页 稻北 | 初学一级 | 园豆:83
提问于:2015-10-17 23:27
< >
分享
所有回答(2)
0

你的问题是什么?

Firen | 园豆:5385 (大侠五级) | 2015-10-18 09:29

问题是它输出结果有问题。。比如:请输入N:3

-842150451  5 25 75 61 36 64 42 48 41

123倒数第3个数是42

对。。就是这样的现象

支持(0) 反对(0) 稻北 | 园豆:83 (初学一级) | 2015-10-18 09:40

@稻北: 那正确的输出是什么? 48?

支持(0) 反对(0) Firen | 园豆:5385 (大侠五级) | 2015-10-18 09:42

@Firen: 额。。正确就是没有那个什么-842150451啊。。还有直接说倒数第3个就好了。。没有什么123倒数第三个这种。。恩恩。

支持(0) 反对(0) 稻北 | 园豆:83 (初学一级) | 2015-10-18 15:14
0

问题好像没阐述清楚呀?

JackWang-CUMT | 园豆:2866 (老鸟四级) | 2015-10-18 10:26

问题是它输出结果有问题。。比如:请输入N:3

-842150451  5 25 75 61 36 64 42 48 41

123倒数第3个数是42

对。。就是这样的现象

支持(0) 反对(0) 稻北 | 园豆:83 (初学一级) | 2015-10-18 15:14
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册