给出一个单向链表的头指针,输出该链表中倒数第K个节点的指针
2012-08-21 11:26
567 查看
Q:给出一个单向链表的头指针,输出该链表中倒数第K个节点的指针,链表的倒数第0个节点为链表的尾节点(尾节点的next成员为NULL)
NODE* findnode(NODE *head,unsigned int k);
思路:首先求出单向链表的长度为Len,然后从链表头指针开始遍历,一直遍历Len-1-K次就可以找到倒数第K个节点指针。
代码实现如下:
NODE* findnode(NODE *head,unsigned int k);
思路:首先求出单向链表的长度为Len,然后从链表头指针开始遍历,一直遍历Len-1-K次就可以找到倒数第K个节点指针。
代码实现如下:
#include <iostream.h> #include <assert.h> typedef struct Node { int data; struct Node *next; }Node; //根据提供的数据创建单链表 Node *CreateList(int data[],int n) { assert(n>0); Node *head=new Node; head->data=data[0]; head->next=NULL; Node *p=head; for (int i=1;i<n;i++) { Node *p1=new Node; p1->data=data[i]; p1->next=NULL; p->next=p1; p=p1; } return head; } //获取单链表的长度 int GetListLen(Node *head) { int len=0; while(head) { len++; head=head->next; } return len; } //选择倒数第K个节点指针 Node *FindNode(Node *head,int k) { int len=GetListLen(head); if (k>len-1) { return NULL; } int num=len-k-1; Node *p=head; while(num) { p=p->next; num--; } return p; } void main() { int data[5]={1,2,3,4,5}; Node *head=CreateList(data,5); int length=GetListLen(head); cout<<length<<endl; Node *temp=FindNode(head,2); cout<<temp->data<<endl; }
相关文章推荐
- 给出一个单向链表的头指针,输出该链表中倒数第K个节点的指针
- 微软100题13题(输入一个单向链表,输出该链表中倒数第k个结点。链表的倒数第0个结点为链表的尾指针)
- 今天开始学Java 输入一个单向链表,输出该链表中倒数第k个结点,链表的倒数第1个结点为链表的尾指针。
- 面试题:输入一个单向链表,输出该链表中倒数第k个结点。链表的倒数第0个结点为链表的尾指针。
- 13输入一个单向链表,输出该链表中倒数第k个结点。链表的倒数第0个结点为链表的尾指针。
- 微软面试之13 输入一个单向链表 输出该链表的倒数第k个节点
- 输入一个单向链表,输出该链表中倒数第k个结点,链表的倒数第0个结点为链表的尾指针
- 华为oj输出单向链表倒数第k个节点
- 13.输入一个单向链表,输出该链表中倒数第k个结点。链表的倒数第0个结点为链表的尾指针
- 算法---输出单向链表中倒数第K个节点
- 第13题: 题目:输入一个单向链表,输出该链表中倒数第k 个结点。链表的倒数第0 个结点为链表的尾指针。
- 输入一个单向链表,输出该链表中倒数第k个结点
- 输入一个单向链表,输出该链表中倒数第k个结点。链表的倒数第0个结点为链表 的尾指针
- 输入一个单向链表,输出其倒数第k个结点
- 【华为oj2065】输出单向链表倒数第k个节点
- 输入一个单向链表,输出该链表中倒数第K个结点
- 输入一个单向链表,输出该链表中倒数第k个结点
- 输入一个单向链表,输出该链表中倒数第K个结点
- 13 输入一个单向链表,输出该链表中倒数第k个结点
- 输入一个单向链表,输出该链表中倒数第 k 个结点。链表的倒数第0 个结点为链表的尾指针。