c - 链表节点内存分配

标签 c pointers data-structures malloc

在创建链表时,我们创建了一个节点结构,它由数据和指向下一个节点的指针组成。稍后当我们创建一个将元素追加到链表上的函数时,我们创建了一个临时节点来存储输入的数据。

让我们考虑以下程序-

#include<stdio.h>
struct node
{
  int data;
  struct node* link;
}
struct node* root=NULL;
void main(append)
{
  struct node* temp;
  temp= (struct node*)malloc(sizeof(struct node))
  .....
}

我的第一个问题集:

在第 11 行中,为什么我们需要在 malloc 函数之前提到 (struct node*)

那有什么意义呢?

我的第二题集:

如果我们正在制作一个双向链表,其节点结构由 2 个指针组成(用于下一个和上一个节点),我们是否还要初始化一个结构节点类型的指针(用于遍历列表)?

在那种情况下是否有不同的方法来初始化指针?

最佳答案

意义在于让你的程序出bug,

malloc 将返回 void*当你分配给你的 struct somthing*它会自动转换。

关于c - 链表节点内存分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46380673/

相关文章:

c - 当程序使用自定义入口点(使用 gcc 7.4.0)运行时,scanf 会产生段错误

java - 并发HashMap : remove on condition

C中的构造函数和析构函数

c - 如何将指针变量移动指定字节数?

c - 带有指向结构节点的指针的动态数组

java - 这些 BST 算法中哪个更实用?

data-structures - 使用二次探测实现哈希表的原因

c - 进一步加速 openmp 缩减循环

C - strcpy 有什么特殊属性吗?

c++ - 写入SD卡arduino