分享

C语言实现输出链表中倒数第k个节点

 gearss 2016-04-14
/*
* Copyright (c) 2011 alexingcool. All Rights Reserved.
*/
#include <iostream>
using namespace std;
int array[] = {5, 7, 6, 9, 11, 10, 8};
const int size = sizeof array / sizeof *array;
struct Node
{
 Node(int i = 0, Node *n = NULL) : item(i), next(n) {}
 int item;
 Node *next;
};
Node* construct(int (&array)[size])
{
 Node dummy;
 Node *head = &dummy;
 for(int i = 0; i < size; i++) {
 Node *temp = new Node(array[i]);
 head->next = temp;
 head = temp;
 }
 return dummy.next;
}
void print(Node *head)
{
 while(head) {
 cout << head->item << " ";
 head = head->next;
 }
}
Node* findKnode(Node *head, int k)
{
 Node *pKnode = head;
 if(head == NULL) {
 cout << "link is null" << endl;
 return NULL;
 }
 while(k--) {
 if(head == NULL) {
  cout << "k is bigger than the length of the link" << endl;
  return NULL;
 }
 head = head->next;
 }
 while(head) {
 head = head->next;
 pKnode = pKnode->next;
 }
 return pKnode;
}
void main()
{
 Node *head = construct(array);
 cout << "source link: ";
 print(head);
 cout << endl;
 Node *kNode = findKnode(head, 5);
 if(kNode != NULL)
 cout << "the knode is: " << kNode->item << endl;
}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约