链表—初始化指针变和创建新的节点------区别应用分析

简介: 链表—初始化指针变和创建新的节点------区别应用分析

1.区别


第一:创建一个新的节点


SListNode* newhead = (SListNode*)malloc(sizeof(SListNode)); 这行代码使用了malloc函数来分配内存空间,通过sizeof(SListNode)来确定需要分配的内存大小。然后将返回的指针强制类型转换为SListNode类型的指针,并将其赋值给newnode变量。这种方式是使用C语言中的动态内存分配方式。


第二: 初始化一个指针变量


SListNode* cur = NULL; 这行代码将plist指针赋值给cur变量,它们指向同一个内存地址。这种方式是将一个指针变量的值赋给另一个指针变量,使它们指向同一个对象。


总结

第一行代码是使用malloc函数动态分配了一块内存空间,并将其指针赋值给了newhead。这样做是为了创建一个新的SListNode类型的节点,并将其作为链表的头节点。通过malloc函数分配的内存空间在使用完后需要手动释放,否则会造成内存泄漏。

第二行代码将cur的值设置为NULL,表示当前节点为空。这样做是为了初始化一个指针变量,可以在后续的操作中用来指向链表的某个节点。

2.应用场景:


第一行代码通常用于创建新的节点或对象,例如在链表中插入新节点时,需要动态地分配内存空间来存储新节点的数据。这样可以确保每个节点都有独立的内存空间。


第二行代码通常用于遍历链表或者在链表中进行节点操作时,将当前节点的指针赋给一个临时变量,以便于对当前节点进行操作或者移动到下一个节点。


3.举例说明--链表


在C语言链表中,需要初始化一个指针变量的情况有两种:


创建链表时,需要初始化一个指向链表头节点的指针变量。

这样可以方便地遍历链表和操作链表。例如:

struct Node {
    int data;
    struct Node* next;
};

struct Node* head = NULL;  // 初始化指向链表头节点的指针变量

遍历链表时,需要初始化一个指向当前节点的指针变量。

这样可以方便地通过指针变量访问当前节点的数据和下一个节点。例如:

struct Node* temp = head;  // 初始化指向当前节点的指针变量
while (temp != NULL) {
    // 访问当前节点的数据
    printf("%d ", temp->data);
    // 移动到下一个节点
    temp = temp->next;
}

需要创建一个新的节点的情况是


在向链表中插入新的数据时,需要动态分配内存空间来创建新节点。例如:


struct Node* new_node = (struct Node*)malloc(sizeof(struct Node));  // 创建一个新的节点
new_node->data = 10;  // 设置新节点的数据
new_node->next = NULL;  // 设置新节点的下一个节点为NULL
// 将新节点插入到链表中
if (head == NULL) {
    head = new_node;
} else {
    struct Node* temp = head;
    while (temp->next != NULL) {
        temp = temp->next;
    }
    temp->next = new_node;
}
相关文章
|
6月前
|
存储 缓存 算法
在C语言中,数据结构是构建高效程序的基石。本文探讨了数组、链表、栈、队列、树和图等常见数据结构的特点、应用及实现方式
在C语言中,数据结构是构建高效程序的基石。本文探讨了数组、链表、栈、队列、树和图等常见数据结构的特点、应用及实现方式,强调了合理选择数据结构的重要性,并通过案例分析展示了其在实际项目中的应用,旨在帮助读者提升编程能力。
157 5
|
5月前
|
存储 数据可视化 C++
第九问:能否尽可能详细阐述指针和引用的区别?
在C++中,指针和引用是两个重要的概念,用于操作内存地址和数据。指针是一个存储内存地址的变量,可以动态分配和释放内存;引用是变量的别名,绑定后不可改变指向。指针提供更大的灵活性和控制力,适用于复杂内存操作;引用更直观,适合简化代码并提高可读性。根据实际需求选择合适的工具。
97 0
|
7月前
|
存储 安全 编译器
在 C++中,引用和指针的区别
在C++中,引用和指针都是用于间接访问对象的工具,但它们有显著区别。引用是对象的别名,必须在定义时初始化且不可重新绑定;指针是一个变量,可以指向不同对象,也可为空。引用更安全,指针更灵活。
|
7月前
|
存储 C语言
C语言指针与指针变量的区别指针
指针是C语言中的重要概念,用于存储内存地址。指针变量是一种特殊的变量,用于存放其他变量的内存地址,通过指针可以间接访问和修改该变量的值。指针与指针变量的主要区别在于:指针是一个泛指的概念,而指针变量是具体的实现形式。
|
8月前
|
存储 Java 索引
【数据结构】链表从实现到应用,保姆级攻略
本文详细介绍了链表这一重要数据结构。链表与数组不同,其元素在内存中非连续分布,通过指针连接。Java中链表常用于需动态添加或删除元素的场景。文章首先解释了单向链表的基本概念,包括节点定义及各种操作如插入、删除等的实现方法。随后介绍了双向链表,说明了其拥有前后两个指针的特点,并展示了相关操作的代码实现。最后,对比了ArrayList与LinkedList的不同之处,包括它们底层实现、时间复杂度以及适用场景等方面。
156 10
【数据结构】链表从实现到应用,保姆级攻略
|
7月前
|
存储 缓存 C语言
C语言:链表和数组有什么区别
C语言中,链表和数组是两种常用的数据结构。数组是一种线性结构,元素在内存中连续存储,通过下标访问,适合随机访问且大小固定的情况。链表由一系列不连续的节点组成,每个节点存储数据和指向下一个节点的指针,适用于频繁插入和删除操作的场景,链表的大小可以动态变化。
|
7月前
|
存储
探索数据结构:单链表的实践和应用
探索数据结构:单链表的实践和应用
137 0
|
7月前
|
存储
一篇文章了解区分指针数组,数组指针,函数指针,链表。
一篇文章了解区分指针数组,数组指针,函数指针,链表。
54 0
|
8月前
|
前端开发 JavaScript C++
详解链表在前端的应用,顺便再弄懂原型和原型链!
该文章深入解析了链表在前端开发中的应用,并详细阐述了JavaScript中的原型和原型链的概念及其工作原理。
|
9月前
|
Python
【Leetcode刷题Python】138. 复制带随机指针的链表
LeetCode上题目“138. 复制带随机指针的链表”的Python解决方案,包括两种方法:一种是在每个节点后复制一个新节点然后再分离出来形成新链表;另一种是构建一个字典来跟踪原始节点与其副本之间的映射关系,从而处理新链表的构建。
53 1