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);
     }
      
    }
  • 相关阅读:
    session和cookie
    数据库备份
    使用pip安装.whl文件时出现is not a supported wheel on this platform的解决办法
    multiprocessing模块
    threading模块
    python中多线程相关
    python中实现单例模式
    Flask-SQLAlchemy相关与Flask-Migrate相关
    redis模块
    Flask-Login中装饰器@login_manager.user_loader的作用及原理
  • 原文地址:https://www.cnblogs.com/wc1903036673/p/3499524.html
Copyright © 2011-2022 走看看