zoukankan      html  css  js  c++  java
  • 输入一个链表,输出该链表中倒数第k个结点。

    题目是剑指offer上的。一种思路是,使用两个指针,第一个指针,走k-1步,之后第二个指针也开始运行,当第一个指针走到链表尾部时,第二个指针所指的位置就是倒数第k个结点。代码如下,略有点乱,思路是清晰的。这里求的是倒数第三个结点。

    #include <stdio.h>
    #include <string.h>
    
    typedef struct Node{
        int num;
        struct Node *next;
    }NodeHead,*Nodes;
    
    void DeleteNode(Nodes head,int index){
        
        if(head->next==NULL)
            return;
        if(index<1||index>8)
            return;
        Nodes p1,p2;
        p1 = p2 = head->next;
        int i = 0;
        while(i<(index-1)){
            if(p1->next!=NULL){
                p1 = p1->next;
                i++;
            }
            else{
                return;
            }
            
        }
        while(p1->next!=NULL){
            p1 = p1->next;
            p2 = p2->next;
        }
        printf("%d",p2->num);
        
    }
    
    void main()
    {
        
        Nodes head = NULL;
         head = (Nodes)malloc(sizeof(NodeHead));
        head->next = NULL;
        int i ;
        for(i = 8 ;i >= 1 ; i--){
            Nodes node = (Nodes)malloc(sizeof(NodeHead));
            node->num = i;
            node->next = head->next;
            head->next = node;
        }
        
        DeleteNode(head,3);
        
        
        return 0;
    }
  • 相关阅读:
    顺序表
    顺序表实验2
    C艹不使用库函数简陋实现strlen
    数据结构化与保存
    爬取校园新闻首页的新闻
    网络爬虫基础练习
    词频统计
    组合数据类型练习,综合练习
    Python基础综合练习
    熟悉常用的Linux操作
  • 原文地址:https://www.cnblogs.com/CloudStrife/p/7273625.html
Copyright © 2011-2022 走看看