您的位置:首页 > 其它

寻找倒数第K个结点

2014-10-30 10:17 281 查看
#include<stdio.h>
#include<iostream>
using namespace std;

/**
* 找到链表中的倒数第k个节点
*/

//定义结构体
typedef struct Node{
int val;
Node* next;
} Node;

//创建链表
Node* createNode(){
int in;
Node* n;
cin >> in;
if(in == 1000){
n = NULL;
}else{
n = new Node();
n->val = in;
n->next = createNode();
}
return n;
}

//寻找倒数第k个节点
Node* findLastKth(Node* head,int k){
if(head == NULL || k<0)
return NULL;
Node* pBefore = head;
Node* pAfter = head;

int count = 0;
while(count < k-1){
count++;
if(pAfter->next == NULL){
return NULL;
}
pAfter = pAfter->next;
}
while(pAfter->next != NULL){
pBefore = pBefore->next;
pAfter = pAfter->next;
}
return pBefore;
}

int main(){
Node* n1 = createNode();
cout << "++++++++++++++链表为+++++++++++++++++"<< endl;
Node* cur = n1;
while(cur!=NULL){
cout<<cur->val<<endl;
cur = cur->next;
}

int k = 3;
Node* LsThK = findLastKth(n1,k);

cout << "++++++++++++++倒数第k个节点为+++++++++++++++++"<< endl;
cout << LsThK->val <<endl;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: