当前位置:网站首页>Basic knowledge of linked list
Basic knowledge of linked list
2022-07-07 22:49:00 【Qingshan's green shirt】
Basic knowledge of linked list
Type of linked list
What is a linked list , A linked list is a linear structure connected in series by pointers , Each node is made up of two parts , One is the data field and the other is the pointer field ( Holds a pointer to the next node ), The pointer field of the last node points to null( A null pointer means ).
The entry point of the link is called the head node of the list, which is head.

Type of linked list
Single chain list
Just now
Double linked list
A node in a single linked list can only point to the next node of a node .
Double linked list : Each node has two pointer fields , One points to the next node , One points to the previous node .
Double linked list You can query forward or backward .

Circular linked list
Circular linked list , seeing the name of a thing one thinks of its function , The linked list is connected end to end .
Circular linked list can be used to solve Joseph ring problem .

storage
Arrays are continuously distributed in memory , But linked lists are not continuously distributed in memory .
The linked list links the nodes in the memory through the pointer of the pointer field .
So the nodes in the linked list are not continuously distributed in memory , It's scattered on some address in memory , The allocation mechanism depends on the memory management of the operating system .
As shown in the figure, the starting node of this linked list is 2, The termination node is 7, Each node is distributed in a different memory address space , Connected in series by a pointer .

Code —— Definition of linked list
// Single chain list
struct ListNode{
int val;// Data stored on the node
ListNode *next;// Pointer to the next node
ListNode(int x):val(x),next(NULL){
}// Constructors
};
It's OK without this constructor ,c++ A constructor will be generated by default .
But this constructor does not initialize any member changes , Two examples :
Initialize the node by defining its own constructor :
ListNode* head = new ListNode(5);
Use the default constructor to initialize the node
ListNode* head = new ListNode(); head->val = 5;
So if you don't define a constructor and use the default constructor , You can't assign values to variables directly during initialization !
Operation of linked list
Delete node

As long as C Node next The pointer Point to E Node is OK .
That's what some students said ,D Nodes are still in memory ? It's just not in this list .
That's true , So in C++ It's better to release this manually D node , Free up this memory .(free)
Other languages such as Java、Python, It has its own memory recovery mechanism , You don't have to release it yourself .
Add node
It can be seen that the addition and deletion of linked list are O(1) operation , And it doesn't affect other nodes .
But be careful , If you delete the fifth node , You need to find the fourth node from the beginning through next Pointer to delete , The time complexity of the search is O(n).
Performance analysis

Note the insertion of the linked list / The deletion time complexity is O(1) Because the previous node is known , If you simply delete a specific element from a linked list , So you need to traverse + Delete , Time complexity is O(n) 了 .
When an array is defined , The length is fixed , If you want to change the length of the array , You need to redefine a new array .
The length of the linked list can be unfixed , And it can be added and deleted dynamically , Suitable for data volume is not fixed , Add and delete frequently , Less query scenarios .
边栏推荐
- Common verification rules of form components -2 (continuously updating ~)
- Micro service remote debug, nocalhost + rainbow micro service development second bullet
- Anti climbing killer
- How to realize the movement control of characters in horizontal game
- Debezium系列之:源码阅读之SnapshotReader
- 新版代挂网站PHP源码+去除授权/支持燃鹅代抽
- Remove the default background color of chrome input input box
- Remember aximp once Use of exe tool
- How to quickly check whether the opening area ratio of steel mesh conforms to ipc7525
- “拧巴”的早教行业:万亿市场,难出巨头
猜你喜欢

UWA问答精选

Matplotlib quick start

详解全志V853上的ARM A7和RISC-V E907之间的通信方式

Leetcode206. Reverse linked list
Redis官方ORM框架比RedisTemplate更优雅

Form组件常用校验规则-2(持续更新中~)

PHP method of obtaining image information

Ni9185 and ni9234 hardware settings in Ni Max

Micro service remote debug, nocalhost + rainbow micro service development second bullet

Digital transformation: five steps to promote enterprise progress
随机推荐
Use blocconsumer to build responsive components and monitor status at the same time
PKPM 2020软件安装包下载及安装教程
Dbsync adds support for mongodb and ES
Application practice | the efficiency of the data warehouse system has been comprehensively improved! Data warehouse construction based on Apache Doris in Tongcheng digital Department
Pdf document signature Guide
Get the week start time and week end time of the current date
Debezium系列之:支持 mysql8 的 set role 語句
OpenGL configure assimp
Kaggle-Titanic
数字化转型:五个步骤推动企业进步
Leetcode1984. Minimum difference in student scores
Revit secondary development - operation family documents
Aspose. Words merge cells
C # realizes the communication between Modbus protocol and PLC
Install mxnet GPU version
Understand the autograd package in pytorch
JS number is insufficient, and 0 is added
Dayu200 experience officer MPPT photovoltaic power generation project dayu200, hi3861, Huawei cloud iotda
Record a garbled code during servlet learning
Xcode modifies the default background image of launchscreen and still displays the original image