欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

建立单链表 单链表的插入_单链列表插入

发布时间:2025/3/11 编程问答 35 豆豆
生活随笔 收集整理的这篇文章主要介绍了 建立单链表 单链表的插入_单链列表插入 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

建立单链表 单链表的插入

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.

    在这种情况下,要在当前头节点之前插入一个新节点,即每次将插入的节点更新为头节点时。 可以使用以下步骤完成这种插入。

  • Update next pointer of the new node (node to be inserted) to point to the current node.

    更新新节点(要插入的节点)的下一个指针,使其指向当前节点。

  • Update new node as head node.

    将新节点更新为头节点。

  • 2)在结尾处插入 (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:

    在这种情况下,新节点将成为最后一个节点,即新节点的下一个指针将为NULL。 这些步骤是:

  • Set the next pointer of the new node to be NULL.

    将新节点的下一个指针设置为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.

    现有节点的最后一个节点与新节点链接,即,最后一个节点的(现有) 下一个指针指向新节点。

  • 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.

    将当前指针移到要插入节点的位置。

  • Store current next pointer address to tmp_node next.

    将当前的下一个指针地址存储到next tmp_node 。

  • Store tmp_node address to current next.

    将tmp_node地址存储到当前的下一个地址。

    See the below given program...

    请参阅以下给定的程序...

  • Insertion is done.

    插入完成。

    在链接列表中插入新节点的C实现 (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

    建立单链表 单链表的插入

    总结

    以上是生活随笔为你收集整理的建立单链表 单链表的插入_单链列表插入的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。