C++实现双链表
#include <iostream>
using namespace std ;
#define NR(x) (sizeof(x)/sizeof(x[0]))
class node
{
public :
int number ;
node *next ;
node *prev ;
void Init_header(node **header);
void traver_links(node *header);
void top_append_links(node **header , int value);
void tail_append_links(node **header , int value);
int delete_links(node **header , int value);
};
int main(void)
{
int array[] = {1,2,3,4,5,6,7,8,9};
node *header = NULL ;
node list ;
list.Init_header(&header);
int i ;
for(i = 0 ; i < NR(array) ; i++)
{
// list.top_append_links(&header ,array[i]) ;
list.tail_append_links(&header , array[i]);
}
list.traver_links(header);
int num ;
cout << "Pls input a number to delete:" << endl ;
cin >> num ;
list.delete_links(&header , num);
list.traver_links(header);
system("pause");
return 0 ;
}
void node::Init_header(node **header)
{
*header = new node[10] ;
if(NULL == header)
return ;
(*header)->next = *header ;
(*header)->prev = *header ;
}
void node::top_append_links(node **header , int value)
{
node *New = NULL ;
New = new node[10] ;
if(NULL == New)
return ;
New->number = value ;
New->next = (*header)->next ;
(*header)->next = New ;
New->prev = *header ;
New->next->prev = New ;
}
void node::traver_links(node *header)
{
node *tmp;
for(tmp = header->next ; tmp != header ; tmp = tmp->next )
{
cout<<' '<< tmp->number ;
}
cout << endl ;
}
void node::tail_append_links(node **header , int value)
{
node *New = NULL ;
New = new node[10] ;
if(NULL == New)
return ;
New->number = value ;
New->prev =(*header)->prev ;
(*header)->prev = New ;
New->next = *header ;
New->prev->next = New ;
}
int node::delete_links(node **header , int value)
{
node *tmp;
node *fr ;
for(tmp = (*header)->next ; tmp != *header ; )
{
if(tmp->number == value)
{
fr = tmp->next;
tmp->prev->next = tmp->next ;
tmp->next->prev = tmp->prev ;
delete tmp ;
tmp = fr ;
continue ;
}
tmp = tmp->next ;
}
}
C++实现双链表的更多相关文章
- JAVA 链表操作:单链表和双链表
主要讲述几点: 一.链表的简介 二.链表实现原理和必要性 三.单链表示例 四.双链表示例 一.链表的简介 链表是一种比较常用的数据结构,链表虽然保存比较复杂,但是在查询时候比较便捷,在多种计算机语言都 ...
- java实现双链表(差点没写吐系列...)
刚才把单链表写完了,现在又把双链表写了,双链表和单链表的区别就是每个节点有prior和next两个指针,不同于单链表的一个next指针,而且,正是因为有这两个指针,所以双链表可以前后两个方向去移动指针 ...
- 数据结构图文解析之:数组、单链表、双链表介绍及C++模板实现
0. 数据结构图文解析系列 数据结构系列文章 数据结构图文解析之:数组.单链表.双链表介绍及C++模板实现 数据结构图文解析之:栈的简介及C++模板实现 数据结构图文解析之:队列详解与C++模板实现 ...
- C和指针 第十二章 使用结构和指针 双链表和语句提炼
双链表中每个节点包含指向当前和之后节点的指针,插入节点到双链表中需要考虑四种情况: 1.插入到链表头部 2.插入到链表尾部 3.插入到空链表中 4.插入到链表内部 #include <stdio ...
- [C++11][数据结构]自己的双链表实现
这个双链表,是我模仿stl的list制作的,只实现了一些基本功能,像merge,transfer这些就没有实现,用户可以用基本操作来自己做外部实现. 我没有选用stl的[begin,end)迭代器模式 ...
- C#双链表
单链表允许从一个结点直接访问它的后继结点,所以, 找直接后继结点的时间复杂度是 O(1).但是,要找某个结点的直接前驱结点,只能从表的头引用开始遍历各结点.如果某个结点的 Next 等于该结点,那么, ...
- Linux 底下使用C语言的 单链表 ,双链表,二叉树 读取文件,并排序
直接上代码 单链表Linux读文件排序: 双链表Linux读取文件排序: 二叉树LinuX读取文件并排序:
- 再谈LRU双链表内存管理
N年前我写了个双链表也发了博客,还添了代码.但是那个代码不但复杂,而且还有有问题的,一直懒得整理,放在空间误导别人.最近在写服务端,今天抽点空补一篇. 关于LRU网上随便搜,有过后端经验的人应该很多都 ...
- 数组、单链表和双链表介绍 以及 双向链表的C/C++/Java实现
概要 线性表是一种线性结构,它是具有相同类型的n(n≥0)个数据元素组成的有限序列.本章先介绍线性表的几个基本组成部分:数组.单向链表.双向链表:随后给出双向链表的C.C++和Java三种语言的实现. ...
- C++ 双链表基本操作
上一篇博客主要总结了单向链表,这次再总结一下双向链表. 1.概念 双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱.所以,从双向链表中的任意一个结点开始,都 ...
随机推荐
- EBS应付(AP)模块常用表
select * from ap_invoices_all INVOICE头 select * from ap_invoice_distributions_all INVOICE行 select ...
- cocos2d-x 3.11 游戏开发环境搭建流程
cocos2d-x 3.11.1 游戏开发环境搭建流程 1. 准备下面的软件 1) Windows7 64Bit+ VS2013 (VC++) 这个不用多说. 2) cocos2d-x-3.11.1. ...
- javascript之事件处理
一般事件 onclick 鼠标点击时触发此事件 ondblclick 鼠标双击时触发此事件 onmousedown ...
- Android开发学习之路--RxAndroid之简单原理
学习了RxAndroid,其实也就是RxJava了,但是还是不是非常清楚到底RxAndroid有什么用呢?为什么要使用RxAndroid呢?这篇文章讲得不错,RxJava的原理.但是这里还是把整个 ...
- API创建/更新员工薪水
DECLARE lb_inv_next_sal_date_warning BOOLEAN; lb_proposed_salary_warning BOOLEAN; lb_approved_warnin ...
- 6. React 表单使用介绍
表单是前端页面中非常重要也是非常常用的一个内容,react 也在表单方面进行了很多封装,让开发者可以方便快捷地在 react 组件中使用表单.下面介绍如何在组件中正确的使用表单,从而可 ...
- Shell脚本编程入门(一)
最近在学shell,记录一下. if语句的使用: 1.判断两个参数大小 #!/bin/sh #a test about if statement a=10 b=20 if [ $a -eq $b ]; ...
- EBS密码加密研究
DECLARE v_password_1 VARCHAR2(240); v_password_2 VARCHAR2(240); v_password_3 VARCHAR2(240); ...
- 如何设制 select 不可编辑 只读
1. <select style="width:195px" name="role" id="role" onfocus=" ...
- 【unix网络编程第三版】阅读笔记(三):基本套接字编程
unp第三章主要介绍了基本套接字编程函数.主要有:socket(),bind(),connect(),accept(),listen()等. 本博文也直接进入正题,对这几个函数进行剖析和讲解. 1. ...