欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 会展 > C语言中单向链表:创建节点与插入新节点

C语言中单向链表:创建节点与插入新节点

2025/4/7 10:31:39 来源:https://blog.csdn.net/wojiaxiaohuang2014/article/details/147016949  浏览:    关键词:C语言中单向链表:创建节点与插入新节点

一. 简介

单链表是一种常见且基础的数据结构,由一系列节点组成,每个节点包含数据和一个指向下一个节点的指针。

本文简单学习一下C语言中如何实现单项链表。

二. C语言实现单向链表

单向链表:单向链表是一种线性数据结构,由一系列节点组成,每个节点包含两部分:

数据域:存储实际的数据。

指针域:存储指向下一个节点的地址。

单向链表关键点在于:每个节点只有一个指向下一个节点的指针,没有指向前一个节点的指针。

1. 定义链表节点,创建新节点

要实现单链表,首先要定义节点的结构,节点通常包含数据和指向下一个节点的指针。

#include <stdio.h>
#include <stdlib.h>//定义链表节点
typedef struct Node {int data;struct Node* next;
} Node;

创建新节点时,需要为其分配内存,并初始化数据和指针:

//创建链表新节点
Node* create_list(int data) {Node* head = (Node*)malloc(sizeof(Node));if(head == NULL) {printf("malloc error!\n");exit(1);}head->data = data;head->next = NULL;return head; 
}

2. 插入节点

插入节点的操作,可以在链表头部,或者指定位置,尾部进行插入。下面实现像链表头部,尾部插入节点。

(1) 向链表头插入新节点:

//向链表头部插入新节点
Node* insert_at_list_head(Node* head, int data) {Node* new_node = create_list(data);new_node->next = head;return new_node;
}

(2) 向链表尾部插入新节点:

//向链表尾部插入新节点
Node* insert_at_list_end(Node* head, int data) {Node* new_node = create_list(data);if (head == NULL) {return new_node;}//找到链表尾部Node* st_p = head;while(st_p->next != NULL) {st_p = st_p->next;}st_p->next = new_node;return head;
}

(2) 向链表的指定位置插入新节点:

//在链表的指定位置插入新节点
Node* insert_at_list_middle(Node* head, int data, int position) {int i = 0;Node* new_node = create_list(data);//如果插入的位置是头部if(position == 0) {return insert_at_list_head(head, data);}//遍历到指定位置的前一个节点Node* tmp_p = head;for(i=0; i < position-1 && tmp_p->next != NULL; i++) {tmp_p = tmp_p->next;}//如果插入位置超过链表长度,则不进行插入if(tmp_p->next == NULL) {free(new_node);return head;}//在指定位置插入新节点new_node->next = tmp_p->next;tmp_p->next = new_node;return head;
}


下一篇继续学习C语言中对于链表的操作。例如,在链表中查找某个节点,删除链表中某个节点,遍历链表,释放链表等等操作。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词