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

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

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;
}
相关文章
|
11天前
|
存储 安全 C++
C++中的引用和指针:区别与应用
引用和指针在C++中都有其独特的优势和应用场景。引用更适合简洁、安全的代码,而指针提供了更大的灵活性和动态内存管理的能力。在实际编程中,根据需求选择适当的类型,能够编写出高效、可维护的代码。理解并正确使用这两种类型,是掌握C++编程的关键一步。
19 1
|
24天前
|
存储 Python
链表中插入节点
链表中插入节点
|
3天前
|
存储 算法
单链表的应用
单链表的应用
24 6
|
4天前
链表\链表基础应用
链表\链表基础应用
7 3
|
21天前
|
C++ 存储 Java
C++ 引用和指针:内存地址、创建方法及应用解析
'markdown'C++ 中的引用是现有变量的别名,用 `&` 创建。例如:`string &meal = food;`。指针通过 `&` 获取变量内存地址,用 `*` 创建。指针变量存储地址,如 `string *ptr = &food;`。引用不可为空且不可变,指针可为空且可变,适用于动态内存和复杂数据结构。两者在函数参数传递和效率提升方面各有优势。 ```
|
24天前
|
存储 Python
删除链表节点详解
删除链表节点详解
|
24天前
|
存储 Python
链表中删除节点
链表中删除节点
|
23天前
|
C++
多重指针:深入解析、应用与示例
多重指针:深入解析、应用与示例
|
24天前
|
存储 算法 C++
函数的指针:理解与应用
函数的指针:理解与应用
9 1
|
9天前
24. 两两交换链表中的节点
24. 两两交换链表中的节点