2/23作业

1.loop_list.c

#include "loop_list.h"
//创建单向循环链表
loop_p creat_loop_list()
{
    loop_p K = (loop_p)malloc(sizeof(loop_list));
    if(K==NULL)
    {
        printf("空间申请成功\n");
    }
    K->len=0;
    K->next=K;
    return K;
}
//申请新结点
loop_p creat_node(datatype data)
{
    loop_p new=(loop_p)malloc(sizeof(loop_list));
    if(new==NULL)
    {
        printf("空间申请失败\n");
    }
    new->data=data;
    return new;
}

//判空
int loop_empty(loop_p K)
{
    if(K==NULL)
    {
        printf("链表为空\n");
        return -1;
    }
    return K->next==NULL?1:0;
}
    
//头插
void insert_head(loop_p K,datatype data)
{
    if(K==NULL)
    {
        printf("入参为空\n");
        return;
    }
    loop_p new=creat_node(data);
    new->next=K->next;

    K->next=new;

    K->len++;
}

//按位置插入
void insert_pos(loop_p K,datatype data,int pos)
{
    if(K==NULL)
    {
        printf("入参为空\n");
        return;
    }
    if(pos<=0||pos>K->len+1)
    {
        printf("位置不合理\n");
        return;
    }
    loop_p temp = K;
    for(int i=0;i<pos-1;i++)
    {
        temp=temp->next;
    }
    loop_p new=creat_node(data);
    new->next=temp->next;
    temp->next=new;
    K->len++;
}

//输出
void out_put(loop_p K)
{
    if(K==NULL)
    {
        printf("入参为空\n");
        return;
    }
    loop_p temp=K->next;
    /*for(int i=0;i<K->len;i++)
    {
        printf("%d->",temp->data);
        temp=temp->next;
    }*/
    while(temp != K)
    {
        printf("%d->",temp->data);
        temp=temp->next;
    }
    putchar(10);
}

//尾删
void del_tail(loop_p K)
{

    if(K==NULL)
    {
        printf("入参为空\n");
        return;
    }
    if(loop_empty(K))
    {
        printf("链表为空\n");
        return;
    }
    loop_p temp=K;
    while(temp->next->next !=K)
    {
        temp=temp->next;
    }
    loop_p del=temp->next;
    temp->next=K;
    free(del);
    K->len--;
}

//按位置删除
void del_pos(loop_p K,int pos)
{

    if(K==NULL)
    {
        printf("入参为空\n");
        return;
    }
    if(loop_empty(K))
    {
        printf("链表为空\n");
        return;
    }
    if(pos<=0||pos>K->len+1)
    {
        printf("位置不合理\n");
        return;
    }

    loop_p temp = K;
    for(int i=0;i<pos-1;i++)
    {
        temp=temp->next;
    }
    loop_p del=temp->next;
    temp->next=temp->next->next;
    free(del);
    K->len--;
}
2.loop_list.h

#ifndef __LOOP_LIST_H__
#define __LOOP_LIST_H__

#include <stdio.h>
#include <stdlib.h>

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

//创建单向循环链表
loop_p creat_loop_list();
//创建结点
loop_p creat_node(datatype data);
//判空
int loop_empty(loop_p K);
//头插
void insert_head(loop_p K,datatype data);
//按位置插入
void insert_pos(loop_p K,datatype data,int pos);
//输出
void out_put(loop_p K);
//尾删
void del_tail(loop_p K);
//按位置删除
void del_pos(loop_p K,int pos);
#endif

2.main.c

#include "loop_list.h"
int main()
{
    loop_p K=creat_loop_list();
    insert_head(K,12);
    insert_head(K,56);
    insert_pos(K,45,2);
    insert_pos(K,100,3);
    out_put(K);
    printf("-----------\n");
    del_tail(K);
    out_put(K);    
    printf("-----------\n");
    del_pos(K,2);
    out_put(K);    


    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/486544.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024网络安全人才春招正式启动(附面试真题)

新年新气象&#xff01;新的网安春招即将开始~ 话不多说&#xff0c;在此先给大家送上一份新年礼物《春招安全研究岗位面经分享》&#xff0c;祝各位都能找到满意的工作&#xff01; CSDN大礼包&#xff1a;《黑客&网络安全入门&进阶学习资源包》免费分享 安恒卫兵实…

外包干了3个月,技术退步明显

先说一下自己的情况&#xff0c;本科生&#xff0c;19年通过校招进入广州某软件公司&#xff0c;干了接近4年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试…

产品渲染3D效果图一张多少钱,哪个平台更有性价比?

产品渲染3D效果图的价格受到多方面因素的影响&#xff0c;包括但不限于产品类型、渲染难度以及输出尺寸等。如果效果图需要后期处理&#xff0c;还有可能增加其他费用。接下来&#xff0c;我们来了解一下产品渲染效果图的费用情况。 1.产品渲染3D效果图一张多少钱&#xff1f; …

Canal + Kafka 同步 MySQL 数据到 Redis

解决缓存和数据库一致性问题 一般来说&#xff0c;缓存中的数据没什么问题&#xff0c;但是数据库更新后&#xff0c;就容易出现缓存&#xff08;Redis&#xff09;和数据库&#xff08;MySQL&#xff09;间的数据一致性问题。由于写和读是并发的&#xff0c;没法保证顺序&…

openEuler安装MySQL客户端、openEuler安装MySQL-client、openEuler部署MySQL-client

MySQL客户端下载链接&#xff1a;https://downloads.mysql.com/archives/community/ mysql-community-client-5.7.30-1.el7.x86_64.rpm mysql-community-common-5.7.30-1.el7.x86_64.rpm mysql-community-libs-5.7.30-1.el7.x86_64.rpm 3个必选 8.0.22以上的版本是4个&…

【C++私房菜】面向对象中的多重继承以及菱形继承

文章目录 一、多重继承1、多重继承概念2、派生类构造函数和析构函数 二、菱形继承和虚继承2、虚继承后的构造函数和析构函数 三、has-a 与 is-a 一、多重继承 1、多重继承概念 **多重继承&#xff08;multiple inheritance&#xff09;**是指从多个直接基类中产生派生类的能力…

AI副业项目分享

在上一篇文章《这才是大学生该做的副业&#xff0c;别再痴迷于游戏了&#xff01;》中&#xff0c;我分享了一些副业的想法&#xff0c;接着有不少同学问我&#xff1a;具体如何做&#xff1f;这是真把我给整蒙了&#xff0c;这里分享下我可以提供的产品和服务吧&#xff0c;并…

【Qt】鼠标拖拽修改控件尺寸---八个方位修改

前提 在开发一个类似qdesiger的项目中 使用QGraphicsProxyWidget将Qt基础控件作为item放在场景视图中显示和编辑 创建自定义类继承QGraphicsProxyWidget&#xff0c;管理控件 成员变量 有控件的xywh等&#xff0c;其中x、y坐标存储是基于最底层widgetitem的 坐标系 x轴以右为正…

爬虫知识--03

数据存mysql import requests from bs4 import BeautifulSoup import pymysql# 链接数据库pymysql conn pymysql.connect(userroot,password"JIAJIA",host127.0.0.1,databasecnblogs,port3306, ) cursor conn.cursor() cursor conn.cursor()# 爬数据 res request…

2024年阿里云新用户购买云服务器优惠活动整理和续费折扣

2024阿里云服务器优惠活动政策整理&#xff0c;轻量2核2G3M服务器61元一年、2核4G4M带宽165元1年&#xff0c;云服务器4核16G10M带宽26元1个月、149元半年&#xff0c;阿里云ECS云服务器2核2G3M新老用户均可99元一年续费不涨价&#xff0c;企业用户2核4G5M带宽199元一年&#x…

华清远见作业第四十一天——Qt(第三天)

思维导图&#xff1a; 编程 完善对话框&#xff0c;点击登录对话框&#xff0c;如果账号和密码匹配&#xff0c;则弹出信息对话框&#xff0c;给出提示”登录成功“&#xff0c;提供一个Ok按钮&#xff0c;用户点击Ok后&#xff0c;关闭登录界面&#xff0c;跳转到其他界面 如…

C++容器map和set使用

map和set使用 mapmap的使用map的基本功能map的pair介绍map的[ ]介绍 map map是一种关联式容器&#xff0c;map的作用是将key和value一一对应的绑定在一起。用一个结构体pair将他们组合。 map的使用 map的三种插入模式 map<string, string> dist;// 插入方法1 显示构造…