博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
链表随笔之双向链表
阅读量:4979 次
发布时间:2019-06-12

本文共 2837 字,大约阅读时间需要 9 分钟。

 和单链表差不多,就不多说了。

特别注意在插入和删除链表元素操作时,仔细考虑该元素与相邻元素的前向指针、和后续指针的改变。

struct Node {    int val;    Node* pret;    Node* next;};Node* cre_list(int n)         //创建双向链表 n代表元素个数{    Node* head_temp = NULL;    if (n > 0)    {        Node* head = new Node;        head->val = rand()%100;        head->pret = NULL;        head->next = NULL;        head_temp = head;        for (int i = 1 ; i < n;++i)        {            Node* temp = new Node;            temp->val = rand()%100;            temp->next = NULL;            temp->pret = head;            head->next = temp;            head = temp;        }    }    return head_temp;}int get_len(Node* head)           //获得双向链表长度{    int num = 0 ;    Node* temp = head;    while (temp != NULL)    {        ++num;        temp = temp->next;    }    return num;}void display(Node* head)          //输出元素{    Node* temp = head;    while (temp != NULL)    {        cout<
val<<' '; temp = temp->next; } cout<
len) { return; } Node* temp = head; Node* new_one = new Node; new_one->val = n; if (pos == 0) //插入在第一个位置 3 { new_one->pret = NULL; new_one->next = temp; temp->pret = new_one; head = new_one; } else if (pos == len) //插入到最后一个位置 3 { new_one->next = NULL; for (int i = 1; i < pos;++i) { temp = temp->next; } temp->next = new_one; new_one->pret = temp; } else //插入到中间 4 { for (int i = 1 ; i < pos;++i) { temp = temp->next; } Node* temp2 = temp->next; new_one->next = temp2; temp2->pret = new_one; new_one->pret = temp; temp->next = new_one; }}void del_node(Node* &head,int n) //删除节点{ Node* temp = head; if (head->val == n) //删除的是头节点 2 { temp = head->next; temp->pret = NULL; delete head; head = temp; } else // { temp = temp->next; while (temp != NULL) { if (temp->val == n) { if (temp->next == NULL) //删除的是最后个节点 1 { Node* temp2 = temp->pret; temp2->next = NULL; delete temp; } else //删除中间部分的节点 2 { Node* temp2 = temp->next; Node* temp1 = temp->pret; temp1->next = temp2; temp2->pret = temp1; delete temp; } return; } temp = temp->next; } } return;}

转载于:https://www.cnblogs.com/itachi7/archive/2012/07/06/2579520.html

你可能感兴趣的文章
[bzoj3209]花神的数论题
查看>>
Spring MVC(三)控制器获取页面请求参数以及将控制器数据传递给页面和实现重定向的方式...
查看>>
IDEA安装Python环境,并加入Anaconda环境
查看>>
fileupload的乱码解决
查看>>
taglib的uri问题
查看>>
[原创] python udt4 for windows appclient.py
查看>>
Windows Azure系列公开课 - 第三课:创建虚拟机 (基础篇)
查看>>
Leetcode 110
查看>>
【网络优化】Batch Normalization(inception V2) 论文解析(转)
查看>>
EXT Panel 关于横纵向滚动条问题
查看>>
windows服务器下tomcat 8.0 配置远程调试
查看>>
DefaultSerializer requires a Serializable payload but received an object of type [model.Admin]
查看>>
资源搜集:Git精品文章推荐,常年更新
查看>>
Android实例-手机安全卫士(三十九)-自定义吐司(一)(文本格式、显示窗口)...
查看>>
asp生成随机密码
查看>>
[Python]斐波那契数列
查看>>
Vs2017 xaramin mac build agent部署后记
查看>>
[ 安全运维 ] OpenSSH版本内网脚本升级
查看>>
Docker学习之安装mysql
查看>>
ecmall 挂件显示方法
查看>>