C语言链表创建

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct  list_node
{
    int data ; 
    struct list_node *next ;
};

typedef struct list_node list_single ;  
list_single *create_list_node(int data)
{
    list_single *node = NULL ;
    node = (list_single *)malloc(sizeof(list_single));
    if(node == NULL){
        printf("malloc fair!\n");
    }
    memset(node,0,sizeof(list_single));
    node->data = data ;
    node->next = NULL ;
    return node ;
}
int main(void)
{
    int data = 100 ;
    int data2=200;
    list_single *node_ptr = create_list_node(data); //创建一个节点
    printf("node_ptr->data=%d\n",node_ptr->data);   //打印节点里的数据
    printf("node_ptr->next=%d\n",node_ptr->next);  
    node_ptr= node_ptr->next;
    node_ptr=create_list_node(data2);
    printf("node_ptr->data=%d\n",node_ptr->data);   //打印节点里的数据
    printf("node_ptr->next=%d\n",node_ptr->next);  
    free(node_ptr);
    return 0 ;
}
  • 5
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
链表是一种非常常用的数据结构,下面是使用 C 语言创建链表的详细流程: 1. 定义链表节点结构体 定义一个结构体作为链表的节点,通常包含两个成员:一个是存储数据的变量,另一个是指向下一个节点的指针。 ``` struct ListNode { int val; struct ListNode *next; }; ``` 2. 创建头节点 链表的头节点是一个特殊的节点,它不存储数据,只用来表示链表的起始位置。创建头节点可以使用 malloc 函数动态分配内存空间,并将其指针赋值给链表的头指针。 ``` struct ListNode *head = (struct ListNode*)malloc(sizeof(struct ListNode)); head->next = NULL; ``` 3. 添加新节点 在链表中添加新节点的步骤如下: - 创建一个新节点,使用 malloc 函数动态分配内存空间。 - 将新节点的值赋给 val 成员。 - 将新节点插入到链表中,让它成为链表的最后一个节点。 ``` struct ListNode *newNode = (struct ListNode*)malloc(sizeof(struct ListNode)); newNode->val = 1; newNode->next = NULL; struct ListNode *p = head; while (p->next != NULL) { p = p->next; } p->next = newNode; ``` 4. 遍历链表 使用 while 循环遍历链表,从头节点开始一直往后遍历,直到链表的末尾。 ``` struct ListNode *p = head->next; while (p != NULL) { printf("%d ", p->val); p = p->next; } ``` 5. 删除节点 在链表中删除节点的步骤如下: - 找到要删除的节点的前一个节点。 - 将前一个节点的 next 指针指向要删除节点的下一个节点。 - 释放要删除节点的内存空间。 ``` struct ListNode *p = head; while (p->next != NULL && p->next->val != val) { p = p->next; } if (p->next != NULL) { struct ListNode *delNode = p->next; p->next = delNode->next; free(delNode); } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值