双向链表(一)
来源:互联网 发布:华为双卡切换网络数据 编辑:程序博客网 时间:2024/06/14 21:57
struct Node{
int key;
Node *prev,*next;
};
//初始化双向链表,创建一个空表
Node *nil;
void init(){
nil=(Node *)malloc(sizeof(Node));
nil->prev=nil;
nil->next=nil;
}
//往双向链表插入元素,添加到表的开头
void insert(int key){
Node *x=(Node *)malloc(sizeof(Node));
x->key=key;
//头节点后添加元素
//x作为头节点
x->next=nil->next;
nil->next->prev=x;
nil->next=x;
x->prev=nil;
}
//在双向链表中插入元素
Node* listSearch(int key){
Node *cur=nil->next;//从头节点后面的元素开始访问
while(cur!=nil&&cur->key!=key){
cur=cur->next;
}
return cur;
}
//从双向链表中删除元素
void deleteNode(Node *t){
if(t==nil)return ;//t为头节点时不处理。
t->prev->next=t->next;
t->next->prev=t->prev;
free(t);
}
void deleteFirst(){
deleteNode(nil->next);
}
void deleteLast(){
deleteNode(nil->prev);
}
void deleteKey(int key){
//删除搜索到的节点
deleteNode(listSearch(key));
}
- 双向链表(一)
- 双向链表(一)
- 数据结构之Linux Kernel双向链表(一)
- nginx高级数据结构源码分析(一)-----双向链表
- 双向链表(C++)
- List (双向链表)
- (有误)双向链表
- 双向链表(迭代器)
- C语言实现链表之双向链表(一)头文件
- vxworks源码剖析- 数据结构篇一(双向链表)_1(转)
- linux内核数据结构之双向循环链表struct list_head(一)
- 每天一算法(把二元查找树转变成排序的双向链表 )
- C++ 标准模板库STL 双向链表 list 使用方法与应用介绍(一)
- 将二元树转换成一个排序的双向链表(方法一)
- (一)把二元查找树转变成排序的双向链表
- C语言强化(一)二叉排序树转成排序的双向链表
- vxworks源码剖析- 数据结构篇一(双向链表)-转
- 单链表和双向循环链表的创建、初始化、以插入(一)
- 各领域公开数据集下载
- Redis命令用scan代替keys、smembers等命令
- vue中修改了数据但视图无法更新的情况
- SpringBoot构建微服务实战 之 @Import
- Java命名规范
- 双向链表(一)
- linux配置ssl
- [Leetcode] 472. Concatenated Words 解题报告
- java调用C++的dll遇到问题
- QT 为可执行程序添加图标ico
- 浅析各类排序算法(一) 总述
- angularjs中slelect默认选项
- 【ElasticSearch】3.elasticsearch增删改查基本操作
- 初学CNN from Hung-yi Lee 's ML