zoukankan      html  css  js  c++  java
  • [Leetcode]-ReverseLinkedList

    题目:单链表取反

    #include <stdlib.h>
    #include <stdio.h>
    
    typedef struct node *list;
    typedef struct node *position;
    typedef struct node *ListNode;
    
    typedef struct node
    {
        int data;
        position next;
    }node;
    
    static list init_list(void);
    static void delete_list(list L);
    static int isempty(list L);
    static void insert_node(position L,int data);
    static void delete_node(list L,position P);
    static position find_last(list L);
    static position find_value(list L,int data);
    static position find_pre(list L,position P );
    static void print(list L);
    
    
    
    list init_list(void){
        list L  = (list)malloc(sizeof(node));
        L->next = NULL;
        return L;
    }
    void delete_list(list L){
        position P ,next;
        P = L;
        do{
            next = P->next;
            free(P);
            P = next;
        }while(next != NULL);
    }
    int isempty(list L){
        return (L->next == NULL);
    }
    void insert_node(position P,int data){
        position tem ;
        tem = (position)malloc(sizeof(node));
        tem->data = data;
        tem->next = P->next;
        P->next = tem;
    }
    void delete_node(list L,position P){
        position pre ;
        pre = find_pre( L, P);
        if(pre != NULL)
        {
            pre->next = P->next;
            free(P);
        }
        else
        {
            printf("delete_node:p is not in the list!
    ");
        }
    
    }
    position find_last(list L){
        position P;
        P=L;
        while(P->next != NULL)
        {
            P = P->next;
        }
        return P;
    
    }
    position find_value(list L,int data){
        position P ;
        P = L;
        while(P->next != NULL)
        {
            P = P->next;
            if(P->data == data)
                return P;
        }
        return NULL;
    }
    
    position find_pre(list L,position P ){
        position tem ;
        tem = L;
        while(tem->next != NULL)
        {
            if(tem->next == P)
                return tem;
            tem = tem->next;
        }
        return NULL;
    }
    void print(list L){
        position P;
    
        if(isempty( L))
        {
            printf("print: L is a null list!
    ");
            return ;
        }
        P = L;
        while(P->next !=NULL)
        {
            P = P->next;
            printf("print:%p : %d 
    ",P,P->data);
        }
        printf("
    ");
    }
    
    /**
     * Definition for singly-linked list.
     * struct ListNode {
     *     int val;
     *     struct ListNode *next;
     * };
     */
    ListNode reverseList( ListNode head) {
    
        if((head == NULL)||(head->next == NULL) )
            return head;
        ListNode  cur= head;
        ListNode  tempt=NULL;
    
        while (cur->next!=NULL&& cur!=NULL)
        {
            tempt=cur->next;
            cur->next=tempt->next;
            tempt->next=head;
            head=tempt;
            tempt=cur->next;
        }
    
        return head;
    }
    
    int main()
    {
        int a[6]= {1,2,3,4,5,6};
        int i=0;
        list L,L1;
        L = init_list();
    
        print(L);
        printf("insert node
    ");
        for(i=0;i<6;i++)
        {
            insert_node( L,a[i]);
        }
        print( L);
        L1 = reverseList(L);
        print( L1);
    }
    
  • 相关阅读:
    hive查询语句合并问题
    hive isnull或ifnull的替代方法if()方法
    hive科学计数法引发的问题
    科学计数法转字符串
    shell命令执行结果$?
    shell脚本中变量接受hive语句的返回值问题
    shell简单命令
    js切换图片
    js点击图片切换
    操作节点
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/5075676.html
Copyright © 2011-2022 走看看