【数据结构】循环链表和双向链表

【循环链表】

(有头结点)

p=R1->next;

R1->next=R2->next->next;

free(R2->next);

R2->next=p;

例:对于两个单循环链表a,b,将其连接起来,变成一个单循环链表

#include<stdio.h>
#include<stdlib.h>
typedef struct LNode
{int date;struct LNode* next;
} LNode,*LinkList;
LinkList Great_LinkList()
{LinkList L,R;int x;L=(LinkList)malloc(sizeof(LNode));L->next=NULL;R=L;scanf("%d",&x);while(x!=0){R->next=(LinkList)malloc(sizeof(LNode));R->next->date=x;R=R->next;scanf("%d",&x);}R->next=L;return L;
}
void combine_LinkList(LinkList a,LinkList b)
{LinkList p,p2;LinkList R,R2;//分别为a,b的尾指针 p=a->next;;p2=b->next;while(p->next!=a)//找链表a的尾指针 {p=p->next;}while(p2->next!=b)//找链表b的尾指针 {p2=p2->next;}R=p;R2=p2;R->next=b->next;R2->next=a;free(b);
}
void printLink(LinkList L)
{LinkList p;if(L->next==NULL)printf("表空!");else{p=L->next;while(p!=L)//结束循环的标志变为尾指针指向头指针{printf("%4d",p->date);p=p->next;}printf("\n");}
}
int main()
{LinkList a,b;printf("请输入链表1:");a=Great_LinkList();printf("请输入链表2:");b=Great_LinkList();printf("链表1:"); printLink(a);printf("链表2:"); printLink(b);combine_LinkList(a,b);printf("合并后链表:");printLink(a); return 0;
}

 注:与非循环链表相比,只是将原来判断指针是否为NULL,变成判断指针是否为头指针

【双向链表】

【定义】

typedef struct LNode
{
    int date;
    struct LNode *prior,*next;
 } LNode,*LinkList;

*p为双向链表的一个结点,将*s插入到*p的后面

        s->prior=p;
        s->next=p->next;
        p->next->prior=s;
        p->next=s;

【双向链表的插入】

void insert_LinkList(LinkList L)//插入 
{
    LinkList p,s;
    int i,x;
    printf("请输入要插入的位置:");
    scanf("%d",&i); 
    p=Get_LinkList(L,i-1);
    printf("请输入要插入的数据:"); 
    scanf("%d",&x);
    if(p==NULL)
    {
        printf("参数i错误");
    }
    else
    {
        s=(LinkList)malloc(sizeof(LNode));
        s->date=x;
        s->prior=p;
        s->next=p->next;
        p->next->prior=s;
        p->next=s;
    }
}

【双向链表的删除】

          (1)  p->prior->next=p->next;
          (2)p->next->prior=p->prior;
            free(p);

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

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

相关文章

Linux安全配置

进入ssh配置文件 vim /etc/ssh/sshd_config将port 22中的端口号改为5001 重启ssh服务 systemctl restart sshd拓展 sh与bash iptable与firewall ssh与sshd vps与ssh 参考&#xff1a; 【安全-SSH】SSH安全设置 - CSDN AppLinux VPS服务器SSH端口一键修改脚本​Linux脚本…

常见算法

简单认识算法 什么是算法&#xff1f; 解决某个实际问题的过程和方法&#xff01; 排序算法 冒泡排序 选择排序 冒泡排序 每次从数组中找到最大值放在数组的后面去 import java.util.Arrays;public class Work1 {public static void main(String[] args) {//准备一个数组in…

rest_framework_django 学习笔记二(视图路由)

rest_framework_django 学习笔记二&#xff08;视图路由&#xff09; rest_framwork_django学习笔记一(序列化器) 一、rest framework 中Request 与 Response 1、Request REST framework 传入视图的request对象不再是Django默认的HttpRequest对象&#xff0c;二是REST Fame…

Andrioid T 实现充电动画(2)

Andrioid T 实现充电动画&#xff08;2&#xff09; 以MTK平台为例&#xff0c;实现充电动画 效果图 资源包 修改文件清单 system/vendor/mediatek/proprietary/packages/apps/SystemUI/res/layout/prize_charge_layout.xmlsystem/vendor/mediatek/proprietary/packages/ap…

C#文件夹基本操作(判断文件夹是否存在、创建文件夹、移动文件夹、删除文件夹以及遍历文件夹中的文件)

目录 一、判断文件夹是否存在 1.Directory类的Exists()方法 2. DirectoryInfo类的Exists属性 二、创建文件夹 1. Directory类的CreateDirectory()方法 2.DirectoryInfo类的Create()方法 三、移动文件夹 1. Directory类的Move()方法 2.DirectoryInfo类的MoveT…

抖音小店本地生活服务是什么,为何聚合服务商可以带来更多商机?

抖音小店本地生活服务是指在抖音平台上提供与本地生活相关的各种服务的商家&#xff0c;比如外卖服务、快递服务、餐饮服务、美容美发等。这些服务商可以在抖音平台上创建自己的小店&#xff0c;并通过发布视频、图片等形式来展示并销售他们的服务和产品。最近&#xff0c;市场…

11.30_黑马Redis实战篇分布式锁

实战篇9 设立一个在jvm外的锁监视器&#xff0c;可以处理多线程的问题 实战篇10 获取锁的时候&#xff0c;要同时发生获取锁以及设置到期时间。 实战篇11 thinking&#xff1a;JAVA中的自动拆箱与装箱&#xff1f; 【Java基础】自动拆装箱_Elephant_King的博客-CSDN博客 TR…

虚幻学习笔记4—文本内容处理

一、前言 本文使用的虚幻引擎5.3.2&#xff0c;在虚幻中已经集成了很多可以直接处理多样化文本的蓝图&#xff0c;比如格式化动态显示、浮点数多样化等。 二、实现 2.1、格式化文本显示动态内容&#xff1a;在设置某个文本时可以使用“Format Text”蓝图设置自定义可以的显示…

传统算法:使用 Pygame 实现归并排序

使用 Pygame 模块实现了归并排序的动画演示。首先,它生成一个包含随机整数的数组,并通过 Pygame 在屏幕上绘制这个数组的条形图。接着,通过归并排序算法对数组进行排序,动画效果可视化每一步的排序过程。在排序的过程中,程序将数组递归地分成两半,分别进行排序,然后再将…

Spring Security 6.x 系列(7)—— 源码分析之Builder设计模式

一、Builder设计模式 WebSecurity、HttpSecurity、AuthenticationManagerBuilder 都是框架中的构建者&#xff0c;把他们放到一起看看他们的共同特点&#xff1a; 查看AuthenticationManagerBuilder的继承结构图&#xff1a; 查看HttpSecurity的继承结构图&#xff1a; 查看W…

正反转马达驱动芯片 D6287F,驱 动 电 流 达 1.0A,应用于VCRs及 音 频 设 备 等 电 机 的 驱 动 中

D6287F 是 一 块 正 反 转 马 达 驱 动 电 路 &#xff0c;两 种 逻 辑 输 入 方 式 可 控 制 马 达 的 正 转 、 反 转 、 停 止 、 中 断 等 。 内 置 马 达 停 止 时 省 电 电 路 及 热 保 护 电 路 。 最 大 驱 动 电 流 达 1.0A 。 广 泛 用 于 VCRs及 音 频 设 备 等 电…

FL Studio21.1.1.3750中文版是数字音频工作站 (DAW)

FL Studio水果音乐编曲软件中文版,一款强大的音乐制作软件,可以进行音乐编曲、剪辑、录音、混音。FL Studio21.1.1.3750中文版是数字音频工作站 (DAW) 之一&#xff0c;日新月异。它是一款录音机和编辑器&#xff0c;可让您不惜一切代价制作精美的音乐作品并保存精彩的活动画廊…