zoukankan      html  css  js  c++  java
  • 不带头结点的链表操作----插入删除打印

    #include<stdio.h>
    #include<stdlib.h>
    typedef struct list
    {
     int data;
     struct list*next;
    }List;
    List*insert_list_2nd(List*head,int data);
    List*insert_list_last(List*head,int data);
    List*insert_list_order(List*head,int data);
    void print_list(List*head);
    List*delete_list(List*head,int value);
    int main()
    {
     List*head=NULL; 
     int i;
    // for(i=0;i<10;i++)
     // head=insert_list_2nd(head,i);
     // head=insert_list_last(head,i);
     for(i=9;i>=0;i--)
      head=insert_list_order(head,i); 
     print_list(head); 
     for(i=0;i<9;i++)
      head=delete_list(head,i);
     print_list(head); 
    }
    List*insert_list_2nd(List*head,int data)
    {
     List*newnode=(List*)malloc(sizeof(List));
     newnode->data=data;
    /* if(head==NULL)
     {
      head=newnode;
      newnode->next=NULL; 
     } 
     else
     {
      newnode->next=head;
      head=newnode;
     }*/
     newnode->next=head;
     head=newnode; 
     return head;
    }
    List*insert_list_last(List*head,int data)
    { List*newnode=(List*)malloc(sizeof(List));
     List*temp=head; 
     newnode->data=data;
     newnode->next=NULL;
     if(head==NULL) return newnode; 
     while(temp->next)
     {
      temp=temp->next; 
     }  
     temp->next=newnode;
     return head;
    }
    List*insert_list_order(List*head,int data)
    {
     List*temp=head;
     List*newnode=(List*)malloc(sizeof(List));
     newnode->data=data;
     newnode->next=NULL;
     if(head==NULL) //链表为空为空 
     {
      return newnode;
     }
     if(head->data>data)//链表第一个节点就是要插入的位置 
     {
      newnode->next=head;
      return newnode;
     }
     while(temp->next && temp->next->data<data)
     {
      temp=temp->next;
     }
    /* if(temp->next==NULL)
     {
      temp->next=newnode;
     }   
     else
     {
      newnode->next=temp->next;
      temp->next=newnode;
     }*/
     newnode->next=temp->next;
     temp->next=newnode;
     return head;
    }
    void print_list(List*head)
    {
     while(head)
     {
      printf("%d
    ",head->data);
      head=head->next;
     } 
    }
    List*delete_list(List*head,int value)
    { List*temp;
     List*p;
     if(head==NULL) return NULL;
     if(head->data==value)
     {
      temp=head->next;
      free(head);
      return temp; 
     }
     temp=head;
     while(temp->next && temp->next->data!=value)
     {
      temp=temp->next; 
     }  
     //p=temp->next;
     if(temp->next==NULL)
     {
      printf("no have %d
    ",value);
      return head;
     }
     else
     {
      p=temp->next;
      temp->next=temp->next->next;
      free(p);
      return head;
     }
     
    } 
    

      

  • 相关阅读:
    Ruby自学笔记(二)— Ruby的一些基础知识
    Ruby自学笔记(一)— 基本概况
    Tomcat基础教程(四)
    Excel导入
    构建API
    序列化
    图片上传(练习)
    发邮件
    发短信
    Excel表导出
  • 原文地址:https://www.cnblogs.com/wc1903036673/p/3499518.html
Copyright © 2011-2022 走看看