• 求链表中间节点的值,求链表倒数第K个节点,检测链表的环


    int loop(struct Node* head){
        struct Node* p1 = head;
        struct Node* p2 = head;
        int i = 0;
        while(p1 && p2){
            i++;
            if(i!=1){
                if(p1->value == p2->value){
                    printf("%d\n",i);
                    return 1;
                }    
            }
            p1 = p1->next;
            if(p2->next != null){
                p2 = p2->next->next;    
            }else{
                return 0;
            }
            
        }
        printf("%d\n",i);
        return 0;
    }
    
    int middle(struct Node* head){
        struct Node* p1 = head;
        struct Node* p2 = head;
        while(p2){
            p2 = p2->next;
            if(p2 != null){
                p1 = p1->next;
                p2 = p2->next;
            }
        }
        return p1->value;
    }

    int lastK(struct Node* head,int k){
        struct Node* p1 = head;
        struct Node* p2 = head;
        while(k-->0){
            p2 = p2->next;
        }
        while(p2){
            p1 = p1->next;
            p2 = p2->next;
        }
        return p1->value;
    } 
    
    
    
    int main(int argc,char *argv[]){
        /**
        struct Node* head = create();
        print(head);
        
        struct Node* x = malloc(sizeof(struct Node));
        x->value = 1;
        delete(x,&head);
        print(head);
        **/
        struct Node* p1 = malloc(sizeof(struct Node));
        p1->value = 1;
        struct Node* p2 = malloc(sizeof(struct Node));
        p2->value = 2;
        struct Node* p3 = malloc(sizeof(struct Node));
        p3->value = 3;
        struct Node* p4 = malloc(sizeof(struct Node));
        p4->value = 4;
        struct Node* p5 = malloc(sizeof(struct Node));
        p5->value = 5;
        p1->next = p2;
        p2->next = p3;
        p3->next = p4;
        p4->next = p5;
        p5->next = null;
        printf("中间节点数值:%d\n",middle(p1));
       printf("倒数第一个节点数值:%d\n",lastK(p1,2));
    return 0;    
    }
  • 相关阅读:
    关闭Pinterest通知
    android——创建camera应用(译)
    Android样式——Styles
    Android Fragment学习(一)
    Win32汇编环境配置
    关于微信检测SDK应用的原理浅析(iOS)
    iOS的Mantle实战
    Objective-C运行时的一些技巧
    Autolayout入门教程
    基于RAC的通用TableView
  • 原文地址:https://www.cnblogs.com/23lalala/p/2703684.html
Copyright © 2020-2023  润新知