zoukankan      html  css  js  c++  java
  • 链表 | 原地逆置链表

    王道P37 T5


    所谓原地逆置,就是空间复杂度为O(1)的将链表反转。

    实现函数:

    void reverse(LinkList* L){
        LinkList* after=NULL;
        LinkList* pre=NULL;
        LinkList* p=L->next;
        while(p){
            after=p->next;
            p->next=pre;
            L->next=p;
            pre=p;
            p=after;
        }
    }

    完整代码:

    #include <cstdio>
    #include <stdlib.h>
    
    using namespace std;
    
    typedef struct LinkList{
        int data;
        struct LinkList* next=NULL; 
        LinkList(){    }
        LinkList(int x){    
            data=x;
        }
    }LinkList;
    
    LinkList*  build_list(int * arr,int n){
        int i;
        LinkList* L=new LinkList;
        LinkList* pre=L;
        for(i=0;i<n;i++){
            LinkList* p=new LinkList(arr[i]);
            pre->next=p;
            pre=p;
        }
        return L;
    }
    
    void reverse(LinkList* L){
        LinkList* after=NULL;
        LinkList* pre=NULL;
        LinkList* p=L->next;
        while(p){
            after=p->next;
            p->next=pre;
            L->next=p;
            pre=p;
            p=after;
        }
    }
    
    void show_list(LinkList* L){
        LinkList * p=L->next;
        while(p){
            printf("%d ",p->data);
            p=p->next;
        }
        puts("");
    }
    
    int main(){
        int arr[10]={1,2,3,4,5,6,7,8,9,0};
        LinkList * L=build_list(arr,10);
    //    printf("%d ",L->next->data);
        show_list(L);
        reverse(L);
        show_list(L);
    }
     
    View Code
  • 相关阅读:
    C++的Socket的使用源码
    一些程序技术简介
    VMware安装步骤既常见问题
    操作系统和环境准备
    第一章-硬件组成
    python之面向对象
    指向方法之委托(一)
    Django之URL控制器(路由层)
    python之字符编码(四)
    python之字符编码(三)
  • 原文地址:https://www.cnblogs.com/TQCAI/p/8387843.html
Copyright © 2011-2022 走看看