建立单链表 单链表的插入_单链列表插入
建立單鏈表 單鏈表的插入
All possible cases:
所有可能的情況:
Inserting at beginning
開始插入
Inserting at the ending
在末尾插入
Inserting at given position
在給定位置插入
Algorithms:
算法:
1)開始插入 (1) Inserting at the beginning)
In this case, a new node is to be inserted before the current head node, i.e. , every time the node that got inserted is being updated to the head node. Such insertion can be done using following steps.
在這種情況下,要在當(dāng)前頭節(jié)點(diǎn)之前插入一個(gè)新節(jié)點(diǎn),即每次將插入的節(jié)點(diǎn)更新為頭節(jié)點(diǎn)時(shí)。 可以使用以下步驟完成這種插入。
Update next pointer of the new node (node to be inserted) to point to the current node.
更新新節(jié)點(diǎn)(要插入的節(jié)點(diǎn))的下一個(gè)指針,使其指向當(dāng)前節(jié)點(diǎn)。
Update new node as head node.
將新節(jié)點(diǎn)更新為頭節(jié)點(diǎn)。
2)在結(jié)尾處插入 (2) Inserting at the ending)
In such case the new node is going to be the last node, i.e. , the next pointer of the new node is going to be NULL. The steps are:
在這種情況下,新節(jié)點(diǎn)將成為最后一個(gè)節(jié)點(diǎn),即新節(jié)點(diǎn)的下一個(gè)指針將為NULL。 這些步驟是:
Set the next pointer of the new node to be NULL.
將新節(jié)點(diǎn)的下一個(gè)指針設(shè)置為NULL。
Last node of the existing node is linked with the new node, i.e. , the last node's(existing) next pointer points to the new node.
現(xiàn)有節(jié)點(diǎn)的最后一個(gè)節(jié)點(diǎn)與新節(jié)點(diǎn)鏈接,即,最后一個(gè)節(jié)點(diǎn)的(現(xiàn)有) 下一個(gè)指針指向新節(jié)點(diǎn)。
3)插入指定位置 (3) Inserting at given position)
Such case can be handles using following steps:
可以使用以下步驟處理這種情況:
Move the current pointer upto the position where node to be inserted.
將當(dāng)前指針移到要插入節(jié)點(diǎn)的位置。
Store current next pointer address to tmp_node next.
將當(dāng)前的下一個(gè)指針地址存儲(chǔ)到next tmp_node 。
Store tmp_node address to current next.
將tmp_node地址存儲(chǔ)到當(dāng)前的下一個(gè)地址。
See the below given program...
請參閱以下給定的程序...
Insertion is done.
插入完成。
在鏈接列表中插入新節(jié)點(diǎn)的C實(shí)現(xiàn) (C implementation of inserting a new node to a link list)
// // main.c // linkedlist_insert_element_code // // Created by Anshuman Singh on 22/06/19. // Copyright ? 2019 Anshuman Singh. All rights reserved. //#include <stdio.h> #include <stdlib.h>typedef struct node {int data;struct node* next; } node;void insert_node(node** head, int val, int position);void insert_node(node** head, int val, int position) {struct node *curr = *head, *tmp_node = NULL;int count = 1;tmp_node = (node*)malloc(sizeof(node));if (tmp_node == NULL) {printf("Memory allocation is failed:");return;}tmp_node->data = val;tmp_node->next = NULL;if (*head == NULL) {// List is empty, assigning head pointer to tmp_node*head = tmp_node;return;}if (position == 1) {// Inserting node at the beginning of the listtmp_node->next = *head;*head = tmp_node;return;}while (curr && count < position - 1) {curr = curr->next;count++;}if (position > (count + 1)) {printf("\n position doesn't exists in the list ");return;}if (count + 1 == position && curr->next == NULL) {// Inseting node at the end of the listcurr->next = tmp_node;return;}// Inserting node in the list at given positiontmp_node->next = curr->next;curr->next = tmp_node; }void print_list(node* head) {printf("\nList elements:\n");while (head) {printf("%d ", head->data);head = head->next;}printf("\n");return; }int main() {int num_nodes, value, index, position;node* head = NULL;printf("Enter the no. of nodes to create list: ");scanf("%d", &num_nodes);for (index = 1; index <= num_nodes; index++) {printf("Enter node data for position %d in the list: ", index);scanf("%d", &value);insert_node(&head, value, index);}print_list(head);printf("\nInsert the element at 1st position: ");scanf("%d", &value);insert_node(&head, value, 1);// We have inserted one more element, hence num_nodes get increased by 1num_nodes += 1;print_list(head);printf("\nInsert the element at last position: ");scanf("%d", &value);insert_node(&head, value, num_nodes + 1);// We have inserted one more element, hence num_nodes will get increased by 1num_nodes += 1;print_list(head);printf("\nInsert the element at any position in the list\n");printf("Enter the position: ");scanf("%d", &position);printf("Enter the element value: ");scanf("%d", &value);insert_node(&head, value, position);// We have inserted one more element, hence num_nodes will get increased by 1num_nodes += 1;print_list(head);return 0; }Output
輸出量
Enter the no. of nodes to create list: 5 Enter node data for position 1 in the list: 11 Enter node data for position 2 in the list: 22 Enter node data for position 3 in the list: 33 Enter node data for position 4 in the list: 44 Enter node data for position 5 in the list: 55 List elements: 11 22 33 44 55 Insert the element at 1st position: 10 List elements: 10 11 22 33 44 55Insert the element at last position: 20 List elements: 10 11 22 33 44 55 20 Insert the element at any position in the list Enter the position: 4 Enter the element value: 40 List elements: 10 11 22 40 33 44 55 20翻譯自: https://www.includehelp.com/data-structure-tutorial/single-linked-list-insertion.aspx
建立單鏈表 單鏈表的插入
總結(jié)
以上是生活随笔為你收集整理的建立单链表 单链表的插入_单链列表插入的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: scala 方法调用_Scala中的方法
- 下一篇: 一? ilkkn.n_IL&FS的完整形