当前位置:  编程技术>c/c++/嵌入式

双向链表插入删除基本应用介绍

    来源: 互联网  发布时间:2014-10-11

    本文导语:  双链表其实 也没什么 只是多了一个前置链而已 双链表的定义 代码如下: struct DNode { int data; struct DNode *next; struct DNode *pre; }; 单链表的定义 代码如下: view plaincopy struct DNode { int data; struct DNode *next; }; 其他的可以看上一篇博客 ...

双链表其实 也没什么 只是多了一个前置链而已
双链表的定义
代码如下:

struct DNode
{
int data;
struct DNode *next;
struct DNode *pre;
};

单链表的定义
代码如下:

view plaincopy
struct DNode
{
int data;
struct DNode *next;
};

其他的可以看上一篇博客 大致相同
代码如下:

#ifndef HEAD_H
#define HEAD_H
#include
using namespace std;
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#endif
struct DNode
{
int data;
struct DNode *next;
struct DNode *pre;
};
DNode *Creat()

DNode *head,*p,*s;
head=(DNode *)malloc(sizeof(DNode));
p=head;
int temp;
while (cin>>temp&&temp)
{
s=(DNode *)malloc(sizeof(DNode));
s->data=temp;
p->next=s;
s->pre=p;
p=s;
}
head=head->next;
p->next=NULL;
head->pre=NULL;
return (head);
}
DNode *Insert(DNode *&head,int num)
{
DNode *p,*s;
s=(DNode *)malloc(sizeof(DNode));
s->data=num;
p=head;
while (NULL!=p->next&&num>p->data)
{
p=p->next;
}
if (numdata)
{
if (NULL==p->pre)
{
s->next=head;
head->pre=s;
head=s;
head->pre=NULL;
}
else
{
s->pre=p->pre;
p->pre->next=s;
s->next=p;
p->pre=s;
}
}
else
{
p->next=s;
s->pre=p;
s->next=NULL;
}
return(head);
}
DNode *Del(DNode *&head,int num)
{
DNode *p;
p=head;
while (NULL!=p->next&&num!=p->data)
{
p=p->next;
}
if (num==p->data)
{
if (NULL==p->pre)
{
head=p->next;
p->next->pre=head;
free(p);
}
else if (NULL==p->next)
{
p->pre->next=NULL;
free(p);
}
else
{
p->pre->next=p->next;
p->next->pre=p->pre;
free(p);
}
}
else
{
cout

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • C++ Double Ended Queues(双向队列) 成员 empty():返回真如果双向队列为空
  • C语言双向链表 Doubly Linked List
  • C++ Double Ended Queues(双向队列) 成员 Operators:比较和赋值双向队列
  • JavaScript 双向数据绑定库 Way.js
  • C++ Double Ended Queues(双向队列) 成员 resize():改变双向队列的大小
  • 客户机和服务器可以双向收发数据的socket编程
  • C++ Double Ended Queues(双向队列) 成员 swap():和另一个双向队列交换元素
  • PHP双向队列实现代码
  • C++ Double Ended Queues(双向队列) 成员 size():返回双向队列中元素的个数
  • socket双向通讯模式请教
  • C++ Double Ended Queues(双向队列) 成员 assign():设置双向队列的值
  • C#实现https双向认证的实例代码
  • C++ Double Ended Queues(双向队列) 成员 get_allocator():返回双向队列的配置器
  • 客户端程序和服务器程序间能否通过管道来实现数据的双向传递啊?
  • C++ Double Ended Queues(双向队列) 成员 max_size():返回双向队列能容纳的最大元素个数
  • 为什么linux与windows电脑连接非常慢,双向都是!
  • C++ Double Ended Queues(双向队列) 成员 Constructors:创建一个新双向队列
  • 如何在使用嵌入式Linux的设备中通过USB端口与PC进行双向通信
  • C++ Double Ended Queues(双向队列) 成员 at():返回指定的元素
  • mysql 双向同步的键值冲突问题的解决方法分享
  • C++ Double Ended Queues(双向队列) 成员 back():返回最后一个元素
  • codeigniter集成ucenter1.6双向通信的解决办法




  • 特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3