【数据结构】单向循环链表

一、mian函数

#include <stdio.h>
#include "./3.looplinklist.h"
int main(int argc, const char *argv[])
{looplinklist* head = create_looplinklist();insertHead_looplinklist(head,100);insertHead_looplinklist(head,200);insertHead_looplinklist(head,300);show_looplinklist(head);insertEnd_looplinklist(head,999);insertEnd_looplinklist(head,888);insertEnd_looplinklist(head,666);show_looplinklist(head);delHead_looplinklist(head);show_looplinklist(head);delEnd_looplinklist(head);show_looplinklist(head);insertByindex_looplinklist(head,2,55555);show_looplinklist(head);                                         insertByindex_looplinklist(head,20,10086);show_looplinklist(head);delByindex_looplinklist(head,4);show_looplinklist(head);delByindex_looplinklist(head,16);show_looplinklist(head);return 0;
}

二、功能函数

#include <stdio.h>                                                                       
#include <stdlib.h>                                                                      
#include "./3.looplinklist.h"                                                            looplinklist*  create_looplinklist()                                                     
{                                                                                        looplinklist* head =(looplinklist*)malloc(sizeof(looplinklist));                     if(NULL == head)                                                                     {                                                                                    printf("头结点创建失败,链表创建失败\n");                                        return  NULL ;                                                                   }                                                                                    head->text.len = 0;                                                                  head->next= head;                                                                    return head;                                                                         
}                                                                                        //遍历                                                                                   
void show_looplinklist(looplinklist*head)                                                
{                                                                                        looplinklist*p=head;                                                                 while(p->next != head)                                                               {                                                                                    p=p->next;                                                                       printf("%d ",p->text.data);                                                      }                                                                                    printf("\n");                                                                        return ;                                                                             
}                                                                                        //头插                                                                                   
void insertHead_looplinklist(looplinklist*head,dataType num)                             
{                                                                                        looplinklist* temp = (looplinklist*)malloc(sizeof(looplinklist));                    if(NULL == temp)                                                                     {                                                                                    printf("结点创建失败,头插失败\n");                                              return ;                                                                         }                                                                                    temp->next = NULL ;                                                                  temp->text.data = num;                                                               temp->next = head->next;                                                             head->next = temp;                                                                   head->text.len++;                                                                    return ;                                                                             
}                                                                                        //尾插                                                                                
void insertEnd_looplinklist(looplinklist*head,dataType num)                           
{                                                                                     looplinklist* p =head;                                                            while(p->next != head)                                                            {                                                                                 p=p->next;                                                                    }                                                                                 looplinklist* temp = (looplinklist*)malloc(sizeof(looplinklist));                 if(NULL == temp)                                                                  {                                                                                 printf("结点创建失败,尾插失败\n");                                           return ;                                                                      }                                                                                 temp->next = NULL ;                                                               temp->text.data = num;                                                            temp->next = head;                                                                p->next = temp;                                                                   head->text.len++;                                                                 return ;                                                                          
}                                                                                     //判空                                                                                     
int isEmpty_looplinklist(looplinklist*head)                                           
{                                                                                     if(head->next == head)                                                            {                                                                                 return 1;                                                                     }                                                                                 else                                                                              {                                                                                 return 0;                                                                     }                                                                                 
}   //头删                                                              
void delHead_looplinklist(looplinklist*head)                        
{                                                                   if(isEmpty_looplinklist(head))                                  {                                                               printf("链表为空\n");                                       return ;                                                    }                                                               looplinklist* temp =head->next;                                 head->next=head->next->next;                                    head->text.len--;                                               free(temp);                                                     return;                                                         
}                                                                   //尾删                                                              
void delEnd_looplinklist(looplinklist*head)                         
{                                                                   if(isEmpty_looplinklist(head))                                  {                                                               printf("链表为空\n");                                       return ;                                                    }                                                               looplinklist*p=head;                                            while(p->next->next != head)                                    {                                                               p= p->next;                                                 }                                                               looplinklist*temp=p->next;                                      p->next = head;                                                 head->text.len--;                                               free(temp);                                                     return;                                                         
}    //按位置插入                                                                                
void insertByindex_looplinklist(looplinklist*head,int index,dataType num)                   
{                                                                                           if(index<1)                                                                             {                                                                                       printf("位置非法,插入失败\n");                                                     return ;                                                                            }                                                                                       int i=1;                                                                                looplinklist*p=head;                                                                    for(i;i<(index%head->text.len);i++)                                                     {                                                                                       p=p->next;                                                                          }                                                                                       looplinklist*temp = (looplinklist*)malloc(sizeof(looplinklist));                        if(NULL == temp)                                                                        {                                                                                       printf("结点申请失败,插入失败\n");                                                  return ;                                                                            }                                                                                       temp->text.data=num;                                                                    temp->next=p->next;                                                                     p->next = temp;                                                                         head->text.len++;                                                                       return ;                                                                                
}                                                                                           //按位置删除                                                                      
void delByindex_looplinklist(looplinklist*head,int index)                         
{                                                                                 if(index<1)                                                                   {                                                                             printf("位置非法,删除失败\n");                                           return ;                                                                  }                                                                             if(isEmpty_looplinklist(head))                                                {                                                                             printf("链表为空,无法进行删除\n");                                       return ;                                                                  }                                                                             int i=1;                                                                      looplinklist*p=head;                                                          for(i;i<(index%head->text.len);i++)                                           {                                                                             p=p->next;                                                                }                                                                             looplinklist*temp=p->next;                                                    p->next=p->next->next;                                                        free(temp);                                                                   head->text.len--;                                                             return;                                                                       
}                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    

三、头文件

#ifndef __looplink_H__
#define __looplink_H__typedef int dataType;union msg{dataType data;int len;                                                                                
};typedef struct node{union msg text;struct node* next;
}looplinklist;
looplinklist*  create_looplinklist();
void insertHead_looplinklist(looplinklist*head,dataType num);void show_looplinklist(looplinklist*head);
void insertEnd_looplinklist(looplinklist*head,dataType num);
void delHead_looplinklist(looplinklist*head);
void delEnd_looplinklist(looplinklist*head);
void insertByindex_looplinklist(looplinklist*head,int index,dataType num);
void delByindex_looplinklist(looplinklist*head,int index);#endif

四、运行结果:

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

观察者模式和发布订阅模式的区别

从下图中可以看出&#xff0c;观察者模式中观察者和目标直接进行交互&#xff0c;而发布订阅模式中统一由调度中心进行处理&#xff0c;订阅者和发布者互不干扰。这样一方面实现了解耦&#xff0c;还有就是可以实现更细粒度的一些控制。比如发布者发布了很多消息&#xff0c;但…

《Linux C编程实战》笔记:消息队列

消息队列是一个存放在内核中的消息链表&#xff0c;每个消息队列由消息队列标识符标识。与管道不同的是消息队列存放在内核中&#xff0c;只有在内核重启&#xff08;即操作系统重启&#xff09;或显示地删除一个消息队列时&#xff0c;该消息队列才会被真正的删除。 操作消息…

使用python构建Android,探索跨平台应用开发Kivy框架

使用python构建Android&#xff0c;探索跨平台应用开发Kivy框架 1. 介绍Kivy框架 Kivy是什么&#xff1f; Kivy是一个开源的Python跨平台应用程序开发框架&#xff0c;旨在帮助开发者快速构建创新的、可扩展的移动应用和多点触控应用。Kivy采用MIT许可证&#xff0c;允许开发…

⭐北邮复试刷题106. 从中序与后序遍历序列构造二叉树__递归分治 (力扣每日一题)

106. 从中序与后序遍历序列构造二叉树 给定两个整数数组 inorder 和 postorder &#xff0c;其中 inorder 是二叉树的中序遍历&#xff0c; postorder 是同一棵树的后序遍历&#xff0c;请你构造并返回这颗 二叉树 。 示例 1: 输入&#xff1a;inorder [9,3,15,20,7], postor…

Git笔记——2

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言 一、撤销修改__情况一 二、撤销修改__情况二 三、撤销修改__情况三 四、删除文件 五、理解分支 六、创建、切换和合并分支初体验 七、删除分支 八、合并冲突 总…

cms内容管理系统drupal简析

Drupal CMS是一个免费、开源的内容管理系统。 1、我们可以下载一个xampp客户端&#xff0c;方便打开apache 然后在drupal官网上下载一个版本的drupal代码&#xff0c;将其放在xampp\htdocs的目录下&#xff0c;这里我将下载的文件命名为drupal9。 2、在网页里输入localhost\…

ELK入门(一)-Elasticsearch(docker版)

Elasticsearch Elasticsearch安装(docker) 下载Elasticsearch 查询镜像 [rootlocalhost elk]# docker search elasticsearch NAME DESCRIPTION STARS OFFICIAL AUTOMATED elasticsearch …

MySQL 索引原理以及 SQL 优化

索引 索引&#xff1a;一种有序的存储结构&#xff0c;按照单个或者多个列的值进行排序。索引的目的&#xff1a;提升搜索效率。索引分类&#xff1a; 数据结构 B 树索引&#xff08;映射的是磁盘数据&#xff09;hash 索引&#xff08;快速锁定内存数据&#xff09;全文索引 …

【Java EE初阶二十一】http的简单理解(二)

2. 深入学习http 2.5 关于referer Referer 描述了当前页面是从哪个页面跳转来的&#xff0c;如果是直接在地址栏输入 url(或者点击收藏夹中的按钮) 都是没有 Referer。如下图所示&#xff1a; HTTP 最大的问题在于"明文传输”,明文传输就容易被第三方获取并篡改. …

Android反编译工具及使用说明

文章目录 一、反编译常用的工具二、反编译工具的下载安装及使用1. Apktool下载使用 2. dex2jar下载使用 3. jd-gui下载使用 一、反编译常用的工具 Apktool 获取apk里的资源文件、配置文件、清单文件、lib文件夹下的so包等等dex2jar 将apk反编译成java源码&#xff0c;及dex文件…

Stable Diffusion 绘画入门教程(webui)-ControlNet(姿态预处理器openpose)

本片文章接着上篇文章ControlNet介绍他的控制类型&#xff0c;本篇介绍的预处理器为openpose 预处理器&#xff1a;openpose 模型&#xff1a;control_v11p_sd15_openpose 没下载模型的看上篇文章去下载一下哦&#xff0c;不然用不了 文章目录 一、干什么用的二、详细用法1、选…

Django使用Celery异步

安装包 pip install celerypip install eventlet 1.在项目文件的根目录下创建目录结果 2. 在main.py文件中 # !/usr/bin/env python # -*-coding:utf-8 -*-""" # Author &#xff1a;skyTree # version &#xff1a;python 3.11 # Description&#…

Git合并固定分支的某一部分至当前分支

在 Git 中&#xff0c;通常使用 git merge 命令来将一个分支的更改合并到另一个分支。如果你只想合并某个分支的一部分代码&#xff0c;可以使用以下两种方法&#xff1a; 1.批量文件合并 1.1.创建并切换到一个新的临时分支 首先&#xff0c;从要合并的源分支&#xff08;即要…

前端基础自学整理|HTML + JavaScript + DOM事件

目录 一、HTML 1、Html标签 2、Html元素 3、基本的HTML标签 二、CSS 样式 层叠样式表 三、JavaScript 使用示例 四、HTML DOM 通过可编程的对象模型&#xff0c;javaScript可以&#xff1a; window document 1、查找HTML元素 2、操作HTML元素 获取元素的属性 四…

Qt应用-天气预报实例

本文讲解Qt实现天气预报实例。 实现的功能 网络实时获取和显示6天的天气参数并绘制温度趋势曲线; 测试当前网络连接情况; 获得当前的IP地址的行政位置信息; 设计界面如下: 创建保存天气数据的类 #ifndef WEATHERDATA_H #define WEATHERDATA_H #include <QString>…

【C++】1006 - 打印星号三角形 1007 - 统计大写英文字母的个数 1008 - 字符图形9-数字正三角

文章目录 问题一&#xff1a;1006 - 打印星号三角形题目描述&#xff1a;输入&#xff1a;输出&#xff1a;样例&#xff1a;1.分析问题2.定义变量3.输入数据4.数据计算5.输出结果 问题二&#xff1a;1007 - 统计大写英文字母的个数题目描述&#xff1a;输入&#xff1a;输出&a…

解决弹性布局父元素设置高自动换行,子元素均分高度问题(align-content: flex-start)

案例&#xff1a; <view class"abc"><view class"abc-item" v-for"(item,index) in 8" :key"index">看我</view> </view> <style lang"less">.abc{height: 100px;display: flex;flex-wrap: …

【深入理解设计模式】 工厂设计模式

工厂设计模式 工厂设计模式是一种创建型设计模式&#xff0c;它提供了一种在不指定具体类的情况下创建对象的接口。在工厂设计模式中&#xff0c;我们定义一个创建对象的接口&#xff0c;让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。 工厂设计模式的目…

centos 9 编译安装 LAMP wordpress

[rootlocalhost ~]# ll 总用量 655760 -rw-------. 1 root root 1040 2月 17 16:57 anaconda-ks.cfg drwxr-xr-x. 29 501 games 4096 2月 21 11:00 apr-1.7.4 -rw-r--r--. 1 root root 1122147 2月 21 10:57 apr-1.7.4.tar.gz drwxr-xr-x. 21 501 games …

四、分类算法 - 随机森林

目录 1、集成学习方法 2、随机森林 3、随机森林原理 4、API 5、总结 sklearn转换器和估算器KNN算法模型选择和调优朴素贝叶斯算法决策树随机森林 1、集成学习方法 2、随机森林 3、随机森林原理 4、API 5、总结