当前位置: 首页 > news >正文

已知p指向双向循环链表中的一个结点,其结点结构为data、prior、next三个域,写出算法change(p),交换p所指向的结点和它的前缀结点的顺序。

#include<assert.h>
typedef struct SLnode
{int data;struct SLnode* prior;struct SLnode* next;
}SLnode,*SLnodelist;
//创建结点
SLnode* createhead(int data)
{SLnode* newnode = (SLnode*)malloc(sizeof(SLnode));newnode->data = data;newnode->next = newnode->prior = newnode;return newnode;
}
//初始化哨兵位
SLnode* ListInit()
{SLnode* newnode = createhead(0);
}
//尾插
void ListPushBank(SLnode* plist, int x)
{assert(plist);SLnode* ret = plist->prior;SLnode* newnode = createhead(x);ret->next = newnode;newnode->next = plist;newnode->prior = ret;plist->prior = newnode;
}
void printlist(SLnode* plist)
{SLnode* ret = plist->next;while (ret != plist){printf("%d->", ret->data);ret = ret->next;}printf("NULL\n");
}
void change(SLnodelist p)
{SLnodelist q;q = p->prior;q->prior->next = p;p->prior = q->prior;q->next = p->next;p->next->prior = q;q->prior = p;p->next = q;}
int main()
{int n, num;SLnode* plist = ListInit();printf("请输入链表的长度\n");scanf("%d", &n);printf("请输入元素\n");for (int i = 0; i < n; i++){scanf("%d", &num);ListPushBank(plist,num);}printf("双链表的元素如下\n");printlist(plist);printf("请输入你要交换的的结点的值\n");SLnodelist q = (SLnodelist)malloc(sizeof(SLnode));scanf("%d", &q->data);SLnodelist p;p = plist->next;while (p != plist){if (p->data == q->data){change(p);break;}else{p = p->next;}}printf("交换后\n");printlist(plist);return 0;
}

http://www.lryc.cn/news/421521.html

相关文章:

  • 什么是Tensor???为什么人工智能领域论文中经常出现这个名词
  • 爬虫练习_01
  • Datawhale X 魔搭 AI夏令营第四期 魔搭-AIGC方向 task02笔记
  • 多模态大语言模型的免训练视觉提示学习 ControlMLLM
  • Oracle|DM 常用|不常用 SQL大口袋
  • 嵌入式软件--模电基础 DAY 1
  • 【Nacos无压力源码领读】(二) 集成 LoadBalancer 与 OpenFeign
  • 《投资的原理》阅读笔记二——价值投资真是王者吗?
  • SSH、FTP、SFTP相关协议详解
  • C语言进阶——一文带你深度了解“C语言关键字”(中篇6)
  • 自建极简Ethercat主站-第8章 FOE基础功能实现
  • SQL Zoo 8.Using Null
  • LeetCode274. H 指数
  • 概述:Dubbo、Nacos、 Zookeeper 等分布式服务协调与治理等技术
  • 【LINUX】小工具降耦合,全内核函数插入宏摸索测试中。。
  • 24/8/12算法笔记 复习_线性回归
  • Linux系统驱动(十四)输入子系统
  • 力扣(2024.08.12)
  • 最新版的AutoGPT,我搭建好了
  • [SWPUCTF 2021 新生赛]PseudoProtocols(构造伪协议)
  • 基于STM32开发的智能语音助手系统
  • 基于python的图像去雾算法研究系统设计与实现
  • 自定义 View 可以播放一段视频
  • LVS负载均衡集群部署之—NAT模式的介绍及搭建步骤
  • 【算法】浅析哈希算法【附代码示例】
  • 2024.8.12
  • 使用Python解析pdf、docx等格式文件。
  • Linux网络通信基础API
  • Python爬虫:下载4K壁纸
  • 2024年【北京市安全员-B证】新版试题及北京市安全员-B证免费试题