
你们好,最近小活发现有诸多的对于单向链表和双向链表区别,单向链表这个问题都颇为感兴趣的,为大家梳理了
互联网 2023-05-25 17:19:14
你们好,最近小活发现有诸多的对于单向链表和双向链表区别,单向链表这个问题都颇为感兴趣的,为大家梳理了下,一起往下看看吧。
(资料图片仅供参考)
1、首先,定义了链表的数据结构和链表的类。
2、在链表类中构造各种实现方法,如插入、删除、显示、获取头指针等。
3、如果要在链表中节点A之前插入节点B,需要考虑以下几种情况。在插入之前,链表是一个空表。此时,在插入新的节点B之后。如果A是链表的第一个节点,节点B是插入后的第一个节点。如果存在于链表中并且不是第一个节点,
4、那么就要先找到A的最后一个节点a_k,然后让a_k的指针字段指向B,再让B的指针字段指向A,这样就可以完成插入了。如果链表中不存在,则在末尾插入。先找到链表的最后一个节点a_n,然后让a_n的指针字段指向节点B,
5、并且b指针的指针为空。
6、如果要删除链表中的节点A,释放被删除节点占用的存储空间,需要考虑以下几种情况。如果要删除的节点A是第一个节点,将头指向A的下一个节点.要删除的节点A存在于链表中,但它不是第一个节点。
7、那么应该使a的前一个节点a_k-1的指针字段指向a的下一个节点a _ k-1。如果空表或要删除的节点A不存在,则不会进行任何更改。
8、代码:
9、//主函数
10、int main(){StudyList A,B;
11、double Data[10]={12,2,3,44,23,4,23,42,342,8};
12、A.insertList(0,Data[0]);
13、for(int i=1;i10;i++)
14、A.insertList(0,Data[i]);
15、//11
16、A.outputList();
17、A.deleteList(Data[7]);
18、A.outputList();
19、B.insertList(0,Data[0]);
20、for(int i=0;i10;i++)
21、B.insertList(B.getHead()-Data,Data[i]);
22、B.outputList();
23、B.deleteList(55);
24、B.outputList();
25、return 0;
26、}
27、//类库、、、
28、#ifndef STUDYOPERATION_H_
29、#define STUDYOPERATION_H_
30、//学习链表,动态内存分配20150611
31、struct Node
32、{
33、//定义链表的结构
34、double Data;
35、Node *next;
36、};
37、class StudyList
38、{
39、Node *head;
40、public:
41、StudyList();
42、~StudyList();
43、/*double isEmpty();*/
44、void addToHead(double);
45、void addToTail(double);
46、double deleteFromHead();
47、double deleteFromTail();
48、void output list();//链表节点的输出
49、Node *getHead();
50、void insertList(double aData,double bData);
51、void deleteList(double aData);
52、private:
53、};
54、#endif
55、//实现,,,
56、#include "studyOperation.h"
57、#include "main.h"
58、StudyList:StudyList()
59、{
60、head=NULL;
61、}
62、StudyList:~StudyList()
63、{
64、}
65、void StudyList:addToHead(double el)
66、{
67、}
68、Node *StudyList:getHead()
69、{
70、return head;
71、}
72、void StudyList:outputList()
73、{
74、//链表的输出函数
75、Node *current=head;
76、while(current!=NULL)
77、{
78、coutcurrent-Data" ";
79、current=current-next;
80、}
81、coutendl;
82、}
83、Void study list: insert list (double adata, double bData)//Let Adatte be the data in node A and date B be the data in node B.
84、{
85、Node *ptr_a,*ptr_ak,*ptr_b;
86、ptr _ b=(Node *)new(Node);//动态分配一个新节点。
87、ptr_b-Data=bData;
88、ptr_a=head;
89、if(head==NULL)
90、{
91、//如果是空链表,将B作为第一个节点。
92、 cout"空链表!"endl;
93、 head=ptr_b;
94、 ptr_b-next=NULL;
95、}
96、else if(ptr_a-Data==aData)
97、 {
98、 //若a为第一个结点,b插在a之前
99、 ptr_b-next=ptr_a;
100、 head=ptr_b;
101、 }else
102、{
103、while(ptr_a-Data!=aDataptr_a-next!=NULL)
104、{
105、//a存在,但不在第一个结点
106、ptr_ak=ptr_a;
107、ptr_a=ptr_a-next;
108、}
109、if(ptr_a-Data==aData)
110、{
111、//若存在a,将b插在a的前面
112、ptr_ak-next=ptr_b;
113、ptr_b-next=ptr_a;
114、}
115、else
116、{
117、//若没有结点a
118、ptr_a-next=ptr_b;
119、ptr_b-next=NULL;
120、}
121、 }
122、}
123、void StudyList:deleteList(double aData)
124、{
125、Node *ptr_a,*ptr_b;
126、ptr_a=head;
127、if(ptr_a==NULL)//若空
128、return;
129、if(ptr_a-Data==aData)//若是第一个结点
130、{
131、head=ptr_a-next;
132、delete ptr_a;
133、}else
134、{
135、while(ptr_a-Data!=aDataptr_a-next!=NULL)//查找结点a
136、{
137、ptr_b=ptr_a;
138、ptr_a=ptr_a-next;
139、}
140、if(ptr_a-Data==aData)//若有a
141、{
142、ptr_b-next=ptr_a-next;
143、delete ptr_a;
144、}
145、}
146、}
147、效果
以上就是单向链表这篇文章的一些介绍,希望对大家有所帮助。
你们好,最近小活发现有诸多的对于单向链表和双向链表区别,单向链表这个问题都颇为感兴趣的,为大家梳理了
5月25日电,BMD马来西亚棕榈油主力合约日内涨幅扩大至2%,现报3544林吉特 吨。
“全网最低”并非可持续战略,直播电商行业终究将回归常态,而这其中主播的“常态化”就需要完成流量导向到
鲅鱼圈最近的火车站是辽阳站。辽阳站场位于辽宁省辽阳市宏伟路19号,距离鲅鱼圈约有30公里左右的车程。从辽
5月24日,河南辉县市委常委、统战部部长杨振宇积极践行“马上办理,马路办公”机制,在教体局相关人员陪同
□新乡日报全媒体记者李超 文 图“刘大哥讲话理太偏,谁说女子享清闲 ”5月23日下午,在辉县市冀屯镇
周六福黄金价格今天多少一克(2023年05月25日)每日更新
先说免高考上大学近日阳光高考网公布保送生资格名单福建地区共有110名同学免高考已直接被清北复交等名校录
关于报告的所有内容,公众『行业报告智库』阅读原文或点击菜单获取报告下载查看。摘要:报告显示,当前科技
你们好,最近小活发现有诸多的对于我爱你英语大写字母,我爱你英语这个问题都颇为感兴趣的,为大家梳理了下
1、此句出自陶渊明的《归园田居》之三:种豆南山下,草盛豆苗稀。2、晨兴理荒秽,带月荷锄归。3、道狭草木
同花顺金融研究中心5月25日讯,有投资者向友发集团提问,公司主要生产销售各类钢管,请问有没有使用契约锁
主料:海鱼头1个、海杂若干、豆腐300克、菜籽油适量、猪油一勺、豆瓣酱一勺、生姜6片、蒜头4瓣、香醋一勺调
科目三考试是每一个驾驶学员必须接受的考试,它是衡量学员安全驾驶技能的重要参考指标。在此基础上,近年来
1、绿色物业是指在保证物业服务质量等基本要求的前提下,通过科学管理、技术改造和行为引导,有效降低各类