HNCU 1328: 算法2-18~2-19:双向循环链表
《数据结构》 2.3 循环链表
http://hncu.acmclub.com/index.php?app=problem_title&id=111&problem_id=1328
题目描述
![](http://hncu.acmclub.com/upload/pimg1328_1.jpg)
![](http://hncu.acmclub.com/upload/pimg1328_2.jpg)
![](http://hncu.acmclub.com/upload/pimg1328_3.jpg)
![](http://hncu.acmclub.com/upload/pimg1328_4.jpg)
![](http://hncu.acmclub.com/upload/pimg1328_5.jpg)
输入格式
输入数据只有一组,包含很多行。每行有1~3个整数。第一个整数如果是0,则表示输出双向链表中的所有元素;第一个整数如果是1,表示插入1个整数,其后跟2个整数i、e代表在第i个位置插入e;第一个整数如果是2,表示删除1个整数,其后跟1个整数i,表示删除的位置为i。
起始双向链表为空表。保证链表中每个元素不会重复,同时所有的操作都合法。
输出
当需要输出双向链表中的所有元素时输出,每次输出一行。整数间用一个空格隔开。
样例输入
1 1 2
0
1 2 7
0
2 1
0
1 2 4
1 3 5
1 2 6
0
2 3
0
样例输出
2
2 7
7
7 6 4 5
7 6 5
16号第3天改这道题 终于改对了 从这道题我发现自己之前写的都错了
#include<stdio.h>
#include<stdlib.h>#define ERROR 0
#define OK 1typedef int Status;
typedef int ElemType;//-----线性表的双向链表存储结构-------
typedef struct Dulnode{int data;struct Dulnode *prior;struct Dulnode *next;
}DuLNode,*DuLinkList;DuLinkList GetElemP_DuL(DuLinkList l,int i)
{//找到双向循环链表的第i个位置 DuLinkList s ;int j ;s = l->next ;for( j = 1; j < i&&s !=l; j++){s = s->next ;}return s;
}Status ListInsert_DuL(DuLinkList l,int i,ElemType e)
{//在带头结点的双链表L中的第i个位置之前插入元素e
//i的合法值为1<=i<= 表长+1; DuLinkList s ,p;if(!(p = GetElemP_DuL(l,i)))//在L中确定插入的位置指针p return ERROR;s= (DuLinkList)malloc(sizeof(DuLNode));s->data = e;p->prior->next = s;s->prior = p->prior ;s->next = p;p->prior = s;s = l->next ;return OK;
}Status ListDelete_DuL(DuLinkList l,int i)
{
//删除带头结点的双链循环链表L中的第i个元素
//i的合法值1<= i<= 表长 DuLinkList p;if(!(p = GetElemP_DuL(l,i)))//在L中确定第i个元素的位置指针p return ERROR;p->prior->next = p->next ;p->next->prior = p->prior;free(p);
}void print(DuLinkList l)
{DuLinkList s = l->next ;int i = 0;while(s != l){if(i)printf(" ");printf("%d",s->data );s = s->next ;i++;}printf("\n");return ;
}int main()
{int n,i,e;DuLinkList l,s;l = (DuLinkList)malloc(sizeof(DuLNode));l->next = l ;l->prior = l ;while(scanf("%d",&n)!=EOF){switch(n){case 0:print(l);break;case 1:scanf("%d%d",&i,&e);ListInsert_DuL(l,i,e);break;case 2:scanf("%d",&i);ListDelete_DuL(l,i);break;}}return 0;}
转载于:https://www.cnblogs.com/hellocheng/p/7350142.html
HNCU 1328: 算法2-18~2-19:双向循环链表相关推荐
- 从无到有算法养成篇-双向链表与双向循环链表
一.双向链表 1.定义:从下图中的定义结点的代码我们能发现,双向与单向最明显的区别就是是否可以反向查找上一结点. 定义 2.创建:大致和单向的创建差不多,区别在于多了prior的处理 步骤: 1.*L ...
- 51nod 算法马拉松18 B 非010串 矩阵快速幂
51nod 算法马拉松18 B 非010串 矩阵快速幂 非010串 基准时间限制:1 秒 空间限制:131072 KB 分值: 80 如果一个01字符串满足不存在010这样的子串,那么称它为非010串 ...
- Interview:算法岗位面试—11.19早上上海某银行(总行,四大行之一)信息技术岗面试记录
ML岗位面试:11.19早上上海某银行(总行,四大行之一)信息技术岗面试记录 Interview:算法岗位面试-11.19早上上海某银行(总行,四大行之一)信息技术岗面试记录 导读:该次面试是笔试通过 ...
- 使用WPA Supplicant在Ubuntu 18.04/19.04上从终端连接到Wi-Fi的方法
使用WPA Supplicant在Ubuntu 18.04/19.04上从终端连接到Wi-Fi的方法_Linux教程_云网牛站 (ywnz.com) 本文介绍使用wpa_supplicant从Ubun ...
- ubuntu php7.4,在Ubuntu 18.04/19.04/16.04版本上安装PHP 7.4的简单方法
以下介绍安装PHP 7.4的方法非常的简单,适用于Ubuntu 18.04/19.04/16.04版本上,所安装的版本是PHP 7.4.0 RC1,只需要添加PHP ppa存储库并运行相关命令即可完成 ...
- 试编写一个将双向循环链表逆置的算法_图解:链表的快慢指针,解决 80% 的链表面试题!...
一.前言 链表是基本的数据结构之一,它与数组不同,数组在内存中存储,需要一块连续的内容空间来存储,对内存的要求比较高.例如我们需要 100MB 大小的数组,内存中就必须有一段连续的 100MB 的内存 ...
- Leetcode算法Java全解答--19. 删除链表的倒数第N个节点
Leetcode算法Java全解答–19. 删除链表的倒数第N个节点 文章目录 Leetcode算法Java全解答--19. 删除链表的倒数第N个节点 题目 想法 结果 总结 代码 我的答案 大佬们的 ...
- 比特数据结构与算法(第二章收尾)带头双向循环链表的实现
1.链表的分类 链表的分类 ① 单向或者双向 ② 带头或者不带头 ③ 循环或者非循环 常用的链表: 根据上面的分类我们可以细分出8种不同类型的链表,这么多链表我们一个个讲解这并没有意义.我们实际中最常 ...
- 【算法讲18:二次剩余】勒让德符号 | 欧拉判别法 | Cipolla 算法
[算法讲18:二次剩余] Source\mathfrak{Source}Source ⌈\lceil⌈二次剩余⌋\rfloor⌋与⌈\lceil⌈二次非剩余⌋\rfloor⌋ ⌈\lceil⌈二次互反 ...
最新文章
- 微信小程序获取验证码倒计时
- python实现列表去重_python实现七种列表去重方法
- SourceInsight 4.0 之一 设置项目的相对路径(可任意移动位置)
- 将java项目做成app_将鸿蒙做成和EMUI一致,又兼容安卓APP,华为已立于不败之地...
- 想对你说的话,就在这里!
- LeetCode 350. Intersection of Two Arrays II
- H5支付完整demo及问题总结【已解决】
- document 对象 html文档内容
- 计算最小公倍数LCM
- MySQL 第六次练习(视图)
- 去掉表中字段空的空格或换行符
- java 事件处理机制
- Jxl实现Excel的导入与导出
- 1.使用WPE工具分析游戏网络封包
- 万能 解决ubuntu网易云音乐不能播放的各种问题
- 花了1晚上diy的matlab解数独算法,很好理解!
- [xdm+ip]ubuntu下载数据慢或者不通
- 年后跳槽全过程总结(上)——从面试准备到拿到offer
- 知之道,达有余而通不足;行之道,嬴有余以弥不足。知行合一,亦乎 如是。
- 超级壁纸android,超级壁纸大全app下载
热门文章
- 内存对齐指令详解(posix_memalign)
- ARM中Steppingstone启动
- CF-547E(Mike and Friends)后缀数组+线段树 AC自动机+DFS序+树状数组
- 2019牛客暑期多校训练营(第六场)H - Train Driver (最短路)
- IDEA查看Java源码
- 手把手教你安装VMtools
- 列表初始化和赋值初始化的使用注意事项
- Direct Byte Buffer的操作
- 初玩PLSQL连接 Oracle
- hihocoder #1465 : 后缀自动机五·重复旋律8