双向链表
2015-10-08 22:32
369 查看
// list.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <iostream>
using namespace std;
typedef struct list_node {
int data;
list_node *left;
list_node *right;
} Node;
Node *create_node(int data)
{
Node *node = new Node();
node->data = data;
node->left = node->right = NULL;
return node;
}
void delete_node( Node * p )
{
delete p;
p = NULL ;
}
void insert_tail(Node *root , int data)
{
Node *node = create_node( data );
Node *last_node = root;
while(last_node->right != NULL) last_node = last_node->right;
last_node->right = node;
node->left = last_node;
}
Node *find_node(Node *root , int data )
{
Node *node = root ;
while(node != NULL) {
if( data == node->data ) {
return node;
}
node = node->right;
}
return NULL;
}
void insert_back_node(Node *root, int dat , int data )
{
Node *node = find_node(root,dat);
if( node == NULL || node->left == NULL ) return;
Node *new_node = create_node( data );
node->left->right = new_node;
new_node->right = node;
}
void insert_front_node(Node *root, int dat , int data )
{
Node *node = find_node(root,dat);
if( node == NULL ) return;
Node *new_node = create_node( data );
new_node->right = node->right;
new_node->left = node;
node->right = new_node;
}
void remote_node ( Node *root,int data )
{
Node *node = find_node ( root , data );
if( node == NULL ) {
return ;
} else if ( node->left == NULL ) {
node->right->left = NULL;
} else if ( node->right == NULL ) {
node->left->right = NULL ;
} else {
node->left->right = node->right;
node->right->left = node->left;
}
delete_node( node );
}
void traversal( Node *root )
{
Node *last_node = root;
do{
cout<<last_node->data<<endl ;
last_node = last_node->right;
} while(last_node != NULL ) ;
}
int main(int argc, char* argv[])
{
Node *root = create_node(1);
insert_tail(root,4);
insert_tail(root,5);
insert_tail(root,800);
insert_tail(root,6);
insert_tail(root,7);
Node *p = find_node(root,5);
cout << p <<endl;
if(p!=NULL) cout<<p->data <<endl;
insert_back_node(root,5,20);
insert_front_node(root,1,30);
remote_node ( root , 6 ) ;
traversal( root );
return 0;
}
[/code]
From WizNote
相关文章推荐
- 排序算法
- 排序算法
- 一种异步作业处理请求任务的简单实现(以短信发送为例)
- ROS(10):mac 下树莓派Raspberry Pi 烧录 img
- 个人记录
- 浏览器常用的功能
- hdu5289 RMQ+二分
- Maven2的配置文件settings.xml
- 文本框和图片在一行,图片高一头的解决办法
- 《机器学习实战》学习笔记:利用Adaboost元算法提高分类性能
- SQL增删改查语句格式参考二
- Java gui设计
- 二叉树
- [242]Valid Anagram
- struct2 中获取 ServeltConfig对象的实现
- Android中Activity组件详解
- Android面试题大集合
- SQL增删改查语句格式参考一
- usaco Canada Tour
- 第一章1-7