单链表快速查找倒数第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;
}
你的问题是什么?
问题是它输出结果有问题。。比如:请输入N:3
-842150451 5 25 75 61 36 64 42 48 41
123倒数第3个数是42
对。。就是这样的现象
@稻北: 那正确的输出是什么? 48?
@Firen: 额。。正确就是没有那个什么-842150451啊。。还有直接说倒数第3个就好了。。没有什么123倒数第三个这种。。恩恩。
问题好像没阐述清楚呀?
问题是它输出结果有问题。。比如:请输入N:3
-842150451 5 25 75 61 36 64 42 48 41
123倒数第3个数是42
对。。就是这样的现象