zoukankan      html  css  js  c++  java
  • 双向链表

    #include<stdio.h>
    #include<stdlib.h>
    typedef struct list
    {
     int data;
     struct list*left;
     struct list*right;
    }List;
    void insert_list_2nd(List*head,int data);
    void insert_list_last(List*head,int data);
    void insert_list_order(List*head,int data);
    void print_list(List*head);
    void delete_list(List*head,int value);
    
    int main()
    { int i;
     List*head=(List*)malloc(sizeof(List)); 
     head->data=-1;
     head->left=head->right=NULL;
    // for(i=0;i<10;i++)
      //insert_list_last(head,i);
    //  insert_list_2nd(head,i);
     for(i=9;i>=0;i--)
      insert_list_order(head,i);
     print_list(head);
     for(i=0;i<10;i++)
      delete_list(head,i);
     print_list(head);
     
    } 
    
    void insert_list_2nd(List*head,int data)
    {
     List*newnode=(List*)malloc(sizeof(List));
     newnode->data=data;
     newnode->right=head->right;
     head->right=newnode;
     newnode->left=head;
     if(newnode->right)
     {
      newnode->right->left=newnode;
     }   
    }
    void insert_list_last(List*head,int data)
    { List*newnode=(List*)malloc(sizeof(List));
     newnode->data=data; 
     while(head->right)
     {
      head=head->right;
     }
     head->right=newnode;
     newnode->left=head;
     newnode->right=NULL;
       
    }
    void insert_list_order(List*head,int data)
    { List*newnode=(List*)malloc(sizeof(List));
     newnode->data=data; 
     while(head->right && head->right->data<data)
     {
      head=head->right;
     }
     if(head->right==NULL)
     {
      head->right=newnode;
      newnode->left=head;
      newnode->right=NULL;  
     } 
     else
     {
      newnode->right=head->right;
      head->right=newnode;
      newnode->left=head;
      newnode->right->left=newnode; 
     }
    }
    void print_list(List*head)
    {
     while(head)
     {
      printf("%d
    ",head->data);
      head=head->right;
     } 
    }
    void delete_list(List*head,int value)
    {
     List *temp;
     while(head->right && head->right->data!=value)
     {
      head=head->right;
     }
     if(head->right==NULL)
     {
      printf("don't have %d
    ",value);
      return ;
     } 
     else
     {
      temp=head->right;
      head->right=temp->right;
      if(temp->right) 
      {
       temp->right->left=head;
      }
      free(temp);
     }
      
    }
  • 相关阅读:
    [CF1469D] Ceil Divisions
    [CF632D] Longest Subsequence
    [CF1215E] Marbles
    [CF689D] Friends and Subsequences
    [CF707D] Persistent Bookcase
    [CF10D] LCIS
    [CF713C] Sonya and Problem Wihtout a Legend
    [CF1114E] Arithmetic Progression
    [CF1404B] Tree Tag
    [CF710E] Generate a String
  • 原文地址:https://www.cnblogs.com/wc1903036673/p/3499524.html
Copyright © 2011-2022 走看看