• 单链表的几个基本操作


    /*以头插法,创建长度为n的单链表,并实现对其的增、删、改、查*/

    #include<stdio.h>
    #include<stdlib.h>
    
    struct node
    {
        int data;
        struct node *next;
    };
    
    struct node *Creat_List(struct node *head, int n)    //创建链表
    {
        struct node *p;
        for(int i=0;i<n;i++)
        {
            p = (struct node *)malloc(sizeof(struct node));
            scanf("%d",&p->data);
            p->next = head;
            head = p;
        }
        return head;
    }
    
    void Put(struct node *head)      //打印链表
    {
        struct node *p;
        p = head;
        while(p != NULL)
        {
            printf("%d ",p->data);
            p = p->next;
        }
        printf("
    ");
    }
    
    struct node* Insert(struct node *head,int k,int num)          //在k处增加元素num
    {
        struct node *p;
        p = head;
        for(int i=0;i<k;i++)
        {
            p = p->next;
        }
        struct node *temp;
        temp = (struct node *)malloc(sizeof(struct node));
        temp->data = num;
        temp->next = p->next;
        p->next = temp;
        return head;
    }
    
    struct node *Delete(struct node *head, int k)
    {
        struct node *p;
        p = head;
        for(int i=1;i<k-1;i++)
        {
            p = p->next;
        }
        struct node *temp;
        temp = p->next;
        p->next = temp->next;
        return head;
    }
    
    bool Find(struct node *head,int num)
    {
        struct node *p;
        p = head;
        while(p != NULL)
        {
            if(p->data == num)
            {
                return true;
            }
            p = p->next;
        }
        return false;
    }
    
    struct node *Change(struct node *head,int k,int num) //将数字k改为num
    {
        struct node *p;
        p = head;
        while(p!=NULL)
        {
            if(p->data == k)
            {
                p->data = num;
            }
            p = p->next;
        }
        return head;
    }
    
    int main()
    {
        int n;                  //链表长度
        scanf("%d",&n);
        struct node *head=NULL;
        head = Creat_List(head, n);
        Put(head);
        head = Insert(head,2,1000);
        //Put(head);
        head = Delete(head,4);
        //Put(head);
        head = Change(head,4,6);
        //Put(head);
        bool ok = Find(head,7);
        if(ok)
            printf("yes
    ");
        else
            printf("no
    ");
        return 0;
    }
    View Code
  • 相关阅读:
    iOS crash 追终 ,iOS 如何定位crash 位置
    ios 性能优化策略
    如何提升代码编译的速度 iOS
    关于iOS的runtime
    iOS __block 与 __weak
    spring-boot-framework 如何自动将对象返回成json格式
    spring-boot 热部署 intellij IDE(开发过程)
    MAVEN中的插件放在哪个dependcies里面
    css3 RGBA
    css3 loading 效果3
  • 原文地址:https://www.cnblogs.com/alan-W/p/5887002.html
Copyright © 2020-2023  润新知