Doubly Linked List,( Aizu - ALDS1_3C )
题目链接 : https://vjudge.net/problem/Aizu-ALDS1_3_C
注 :双向链表
1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<string.h> 4 struct Node{ 5 int key; 6 struct Node *prior,*next; 7 }; 8 9 Node *nil; //创建头节点 10 11 Node* list_search(int key) { //搜索链返回值为节点地址 12 Node *cur = nil -> next; 13 while(cur -> key != key && cur != nil) { //当key值与链中某节点key相同或到达nil停止 14 cur = cur -> next; 15 } 16 return cur; 17 } 18 19 void init() { //初始化头节点 20 nil = (Node *)malloc(sizeof(Node)); //定义一个指针不为其分配内存,需要动态分配内存 21 nil -> next = nil; 22 nil -> prior = nil; 23 } 24 25 void print_list() { //打印链表 26 Node *cur = nil -> next; //从首节点开始打印 27 int isf = 0; //判断空格输出 28 while(1) { 29 if(cur == nil) break; 30 if(isf++ > 0) printf(" "); 31 printf("%d",cur ->key); 32 cur = cur -> next; 33 } 34 printf("\n"); 35 } 36 void delete_node(Node *t) { 37 if (t == nil) return; //t为头节点不做处理 38 t -> prior -> next = t -> next; 39 t -> next -> prior = t -> prior; 40 free(t); //删除后释放空间 41 } 42 43 void delete_frist() { 44 delete_node(nil -> next); 45 } 46 47 void delete_last() { 48 delete_node(nil -> prior); 49 } 50 51 void insert(int key) { //理解插入方式 52 Node *x = (Node*)malloc(sizeof(Node)); 53 x -> key = key; 54 x -> next = nil -> next; 55 nil -> next -> prior = x; 56 nil -> next = x; 57 x -> prior = nil; 58 } 59 60 void delete_key(int key) { 61 delete_node(list_search(key)); 62 } 63 int main() 64 { 65 int key, n, i; 66 int size = 0; 67 char com[20]; 68 int np = 0,nd = 0; 69 scanf("%d",&n); 70 init(); 71 for (i = 0;i < n;i++ ) { 72 scanf("%s%d",com,&key); 73 if (com[0] == 'i') { insert(key);np++;size++; } 74 else if(com[0] == 'd') { 75 if (strlen(com) > 6){ 76 if( com[6] == 'F' ) delete_frist(); 77 else if( com[6] == 'L') delete_last(); 78 } 79 else{ 80 delete_key(key); nd++; 81 } 82 size--; 83 } 84 } 85 86 87 print_list() ; 88 89 return 0; 90 }
转载于:https://www.cnblogs.com/Dicer/p/8509791.html
Doubly Linked List,( Aizu - ALDS1_3C )相关推荐
- C++Doubly Linked List双向链表(附完整源码)
C++AVL树自平衡二叉查找树 node结构体定义 实现了以下几个接口 Doubly Linked List双向链表算法的完整源码(定义,实现,main函数测试) node结构体定义 struct n ...
- C语言实现双向链表Doubly Linked List(附完整源码)
双向链表Doubly Linked List list结构体 实现以下6个接口 双向链表Doubly Linked List完整源码(定义,实现,main函数测试) list结构体 typedef s ...
- 双向链表(Doubly Linked List)
双向链表(Doubly Linked List) 1. 双向链表的概念 1.1 双向链表的定义 双向链表又称为双链表,是链表的一种. 1.2 双向链表的结点结构 双向链表的结点包括三个部分:前驱指针域 ...
- 1052 Linked List Sorting(排序)
1052 Linked List Sorting(排序) 思路: s t r u c t + struct+ struct+排序. 坑点: 1.答案只包含从原链表中头结点开始的结点,有点结点不在原链表 ...
- LeetCode 426. Convert Binary Search Tree to Sorted Doubly Linked List--转换二叉树为双向链表--Java,C++,Python解法
题目地址:Convert Binary Search Tree to Sorted Doubly Linked List - LeetCode Convert a BST to a sorted ci ...
- python小练习--模拟用户登录,(3次重试机会,登录成功展示登录账号密码)
知识点使用:1.格式化输出的两种方法---% .formate 2.while循环的使用,及跳出循环的两种方法---break(跳出循环体).continue(结束本次循环,继续下次循环) 3.if条 ...
- LeetCode 430. Flatten a Multilevel Doubly Linked List
原题链接在这里:https://leetcode.com/problems/flatten-a-multilevel-doubly-linked-list/description/ 题目: You a ...
- 【解答】一个电动模型,每一组电池能让其行驶8分钟,一个充电器能同时给两组电池充电,一组充满需要15分钟,至少准备(?)组电池,(?)个充电器,可以让模型每次行驶完可以立即换电池行驶不用等待。
阿里2015年实习生题目: 一个电动模型,每一组电池能让其行驶8分钟,一个充电器能同时给两组电池充电,一组充满需要15分钟,至少准备(?)组电池,(?)个充电器,可以让模型每次行驶完可以立即换电池行驶 ...
- webpack 4.14.0 版本太高,无法执行相关指令,(将webpack高版本切换到低版本)--直接覆盖
(1)问题: webpack 4.14.0 版本太高,无法执行相关指令, (2) 解决办法:将高版本切换到低版本 (3)实现 webpack 4.14.0 版本太高,无法执行相关指令,指令不熟悉,高版 ...
最新文章
- Centos7.4 版本环境下安装Mysql5.7操作记录
- 2020个人Flag已立,欢迎监督!
- 去除字符串标点 + 泛型算法使用
- 设置MySQL服务的字符集为uft8
- curl参数为多维数组时提示数组到字符串的转换问题
- python enumerate_python中enumerate的用法实例解析
- 简述区块链(1)- 也许只有这一篇
- Linux基础入门学习笔记之二
- Eclipce Luna 离线安装ADT23
- 类图的使用 c# 1613918428
- textarea选中行删除_Easy Data Transform如何在Excel中删除重复的行?
- 一条长为L的绳子,一面靠墙,另外三边组成矩形,问此矩形最大面积能是多少?...
- 转:基于AOP实现Ibatis的缓存配置过期策略
- [转载] python 等号 重载_python运算符重载2
- NLP之电影评分数据的情感分析
- 用Python写一个语音播放软件
- 【LaTeX】 案例分析 (8) - 高等数学分析 Mathematica 实验报告
- 设置小程序video标签宽高比例为9/16
- 贝叶斯网络(belief network)
- Android工程师进阶第五课 多线程锁,线程池和DVM/ART优化