当前位置:网站首页>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 .
边栏推荐
- UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0xf9 in position 56: illegal multibyte sequence
- The essence of analog Servlet
- Revit secondary development - Hide occlusion elements
- Loki, the "open source star picking program", realizes the efficient management of harbor logs
- 【Azure微服务 Service Fabric 】如何转移Service Fabric集群中的种子节点(Seed Node)
- What does it mean to prefix a string with F?
- Xcode modifies the default background image of launchscreen and still displays the original image
- Write in front -- Talking about program development
- Common verification rules of form components -2 (continuously updating ~)
- Pyqt GUI interface and logic separation
猜你喜欢
Loki, the "open source star picking program", realizes the efficient management of harbor logs
Remember aximp once Use of exe tool
Leetcode1984. Minimum difference in student scores
Firefox browser installation impression notes clipping
Application practice | the efficiency of the data warehouse system has been comprehensively improved! Data warehouse construction based on Apache Doris in Tongcheng digital Department
vite Unrestricted file system access to
Apple further entered the financial sector through the 'virtual card' security function in IOS 16
行测-图形推理-7-相异图形类
The PHP source code of the new website + remove authorization / support burning goose instead of pumping
Yarn开启ACL用户认证之后无法查看Yarn历史任务日志解决办法
随机推荐
Redis集群安装
Remember an experience of using selectmany
How to quickly check whether the opening area ratio of steel mesh conforms to ipc7525
Interview question 01.02 Determine whether it is character rearrangement - auxiliary array algorithm
Unity technical notes (I) inspector extension
23. Merge K ascending linked lists -c language
Ueeditor custom display insert code
行测-图形推理-3-对称图形类
行测-图形推理-6-相似图形类
OpenGL job - texture
Get the exact offset of the element
Variables and constants
Revit secondary development - cut view
详解全志V853上的ARM A7和RISC-V E907之间的通信方式
“拧巴”的早教行业:万亿市场,难出巨头
Gazebo import the mapping model created by blender
Digital transformation: five steps to promote enterprise progress
Pdf document signature Guide
ASP. Net core introduction V
Debezium系列之: 支持在 KILL 命令中使用变量