• loop_list单向循环列表


    #include "loop_list.h"
    //创建单向循环链表
    loop_p create_head()
    {
        loop_p L=(loop_p)malloc(sizeof(loop_list));
        if(L==NULL)
        {
            printf("create fail\n");
            return NULL;
        }
        L->len = 0;
        L->next=L;
        return L;
    }
    //创建节点
    loop_p create_node(datatype data)
    {
        loop_p new=(loop_p)malloc(sizeof(loop_list));
        if(new==NULL)
        {
            printf("create fail\n");
            return NULL;
        }
        new->data=data;
        return new;
    }
    //头插
    void insert_head(loop_p L,datatype data)
    {
        if(L==NULL)
        {
            printf("data fail\n");
            return;
        }
        loop_p new=create_node(data);
        new->next=L->next;
        L->next=new;
        L->len++;
    }
    //输出
    void out_put_loop(loop_p L)
    {
        loop_p p=L->next;
        while(p!=L)
        {
            printf("%d--->\n",p->data);
            p=p->next;
        }
        putchar(10);
    }
    //按位置插入
    void insert_pos(loop_p L,datatype data,int pos)
    {
        loop_p new=create_node(data);
        loop_p p=L;
        for(int i=0;i     {
            p=p->next;
        }
        new->next=p->next;
        p->next=new;
        L->len++;
    }
    //尾删
    void del_tail(loop_p L)
    {
        loop_p p=L;
        while(p->next->next!=L)
        {
            p=p->next;
        }
        loop_p del=p->next;
        p->next=L;
        free(del);
        L->len--;
    }
    //按位置删除
    int del_pos(loop_p L,datatype pos)
    {
        loop_p p=L;
        for(int i=0;i     {
            p=p->next;
        }
        loop_p del = p->next;
        p->next=p->next->next;
        free(del);
        L->len--;
    }
    #ifndef __LOOP_LIST_H__
    #define __LOOP_LIST_H__
    #include <stdio.h>
    #include

    typedef int datatype;

    typedef struct loop_list
    {
        union
        {
            int len;
            datatype data;
        };
        struct loop_list *next;
    }loop_list,*loop_p;


    //创建单向循环链表
    loop_p create_head();
    //创建节点
    loop_p create_node(datatype data);
    //头插
    void insert_head(loop_p L,datatype data);
    //按位置插入
    void insert_pos(loop_p L,datatype data,int pos);
    //输出(看现象)
    void out_put_loop(loop_p L);
    //尾删
    void del_tail(loop_p L);
    //按位置删除
    int del_pos(loop_p L,datatype pos);

    #endif
    #include "loop_list.h"
    int main()
    {
        loop_p L=create_head();
        insert_head(L,1);
        insert_head(L,2);
        insert_head(L,3);
        insert_pos(L,4,2);
        //del_tail(L);
        del_pos(L,2);
        out_put_loop(L);

        return 0;
    }
     

  • 相关阅读:
    A-level经济难,但是想学好应该怎么做?
    Golang的数组、切片、映射
    TypeScript 学习笔记
    MySQL数据库UDF提权学习
    CNN(卷积神经网络)、RNN(循环神经网络)、DNN(深度神经网络)的内部网络结构有什么区别?
    安卓——图片加载工具(Glide封装版)
    【微信小程序】saveFile:fail tempFilePath file not exist
    2022 年杭电多校第七场补题记录
    dbeaver连接MySQL数据库及错误Connection refusedconnect处理
    day02:DML DQL DCL
  • 原文地址:https://blog.csdn.net/weixin_56593602/article/details/136263126