zoukankan      html  css  js  c++  java
  • 求链表中间节点的值,求链表倒数第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;    
    }
  • 相关阅读:
    学习记录6
    学习记录5
    学习记录4
    学习记录3&开启新的世界
    学习记录2
    学习记录1
    类、对象和包
    班会总结
    请简单描述一下,java程序的运行过程,以及java为什么能跨平台
    JDK、JRE、JVM的区别与关系
  • 原文地址:https://www.cnblogs.com/23lalala/p/2703684.html
Copyright © 2011-2022 走看看