首页 > 其他 > 详细

找到链表的第K个数

时间:2015-01-24 08:57:35      阅读:321      评论:0      收藏:0      [点我收藏+]
#include <stdio.h>
#include <stdlib.h>
typedef struct LinkNode
{
    struct LinkNode* next;
    int data;
}LinkList;
/*创建链表*/
void createLinkList(LinkList* head, int* a, int n)
{
    int i = 0;
    LinkNode* node = NULL;
    while (i < n)
    {
        node = new LinkNode;
        node->next =  head->next;
        node->data = a[i];
        head->next = node;
        i++;
    }
}
/*找到倒数第K个数*/
LinkNode* findKNum(LinkList* head, int k)
{
    LinkNode* p = head->next;
    LinkNode* q;
    int i = 0;
    
    /*先让p走k步*/
    while (p!=NULL && i<k)
    {
        p = p->next;
        i++;
    }
    if (i < k)
    {
        return NULL;
    }
    q = head->next;;
    while (p != NULL)
    {
        p = p->next;
        q = q->next;
    }
    return q;
}
/*打印链表*/
void printLinkList(LinkList* head)
{
    LinkNode* node = head->next;
    while (node != NULL)
    {
        printf("%d\t", node->data);
        node = node->next;
    }
    printf("\n");
}
int main()
{
    LinkList head = {0};
    LinkList* node = NULL;
    int a[] = {9, 8, 7, 6, 5, 4, 3, 2, 1};
    createLinkList(&head, a, 9);
    printLinkList(&head);
    node = findKNum(&head, 10);
    if (node == NULL)
    {
        printf("NULL\n");
        return 0;
    }
    printf("k num %d\n", node->data);
    return 0;
}

找到链表的第K个数

原文:http://blog.csdn.net/yuanwei1314/article/details/43082953

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!