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

癫疯极咸

癫疯极咸

2016-02-19 11:51

下面,图老师小编带您去了解一下双向链表插入删除基本应用介绍,生活就是不断的发现新事物,get新技能~
双链表其实 也没什么 只是多了一个前置链而已
双链表的定义
代码如下:

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 iostream
using namespace std;
#include cassert
#include cstdlib
#include cmath
#include sstream
#include fstream
#include string
#include algorithm
#include list
#include queue
#include vector
#include deque
#include stack
#include bitset
#include set
#include map
#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 (cintemp&&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&&nump-data)
{
p=p-next;
}
if (num=p-data)
{
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
{
coutnum" cound not be found"endl;
}
return head;
}
void Display(DNode *head)
{
DNode *p;
p=head;
while (NULL!=p)
{
cout(p-data)" ";
p=p-next;
}
coutendl;
}

代码如下:

#include "head.h"
int main()
{
DNode *head;
head=Creat();
Display(head);
#ifndef DEBUG
cout"please input an num to insert:";
#endif
int insert_num;
while (cininsert_num&&insert_num)
{
Insert(head,insert_num);
Display(head);
}
#ifndef DEBUG
cout"please input an number to delete:";
#endif
int delete_num;
while (cindelete_num&&delete_num)
{
Del(head,delete_num);
Display(head);
}
return (EXIT_SUCCESS);
}
展开更多 50%)
分享

猜你喜欢

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

编程语言 网络编程
双向链表插入删除基本应用介绍

Java语言中链表和双向链表

Web开发
Java语言中链表和双向链表

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

Java语言中链表和双向链表的实现

编程语言 网络编程
Java语言中链表和双向链表的实现

链表的C语言实现之循环链表及双向链表

编程语言 网络编程
链表的C语言实现之循环链表及双向链表

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

双向折叠

工业设计 设计素描
双向折叠

瑜伽基本动作介绍

瑜伽 养生 健康
瑜伽基本动作介绍

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

PPT怎么插入图表

PPT怎么插入图表

C++开发在IOS环境下运行的LRUCache缓存功能

C++开发在IOS环境下运行的LRUCache缓存功能
下拉加载更多内容 ↓