链表几个常规操作,代码直接可用

本文展示了如何在C语言中实现链表的基本操作,包括创建链表、在表头、表中指定位置和表尾插入节点,以及打印链表内容。代码示例详细且可直接使用。
摘要由CSDN通过智能技术生成

#include <stdio.h>

#include <stdlib.h>

typedef struct _node

{

    int data;

    struct _node *next;

}Node;

Node* create_list()

{

    Node *head_node = (Node *)malloc(sizeof(Node));

    head_node->next = NULL;

    return head_node;

}

Node* create_node(int data)

{

    Node *new_node = (Node *)malloc(sizeof(Node));

    new_node->data = data;

    new_node->next = NULL;

    return new_node;

}

void insert_node_by_head(Node *head_node, int data)

{

    Node *new_node = create_node(data);

    new_node->next = head_node->next;

    head_node->next = new_node;

}

void insert_node_by_pos(Node *head_node, int insert_data, int data)

{

    Node *p = head_node->next;

    Node *p_pro = head_node;

    if(p == NULL)

    {

        printf("链表为空 \n");

        return;

    }

    else

    {

        while (p->data != data)

        {

            p_pro = p;

            p = p->next;

            if(p == NULL)

            {

                printf("未找到数据 \n");

                return;

            }

        }

       

        Node *new_node = create_node(insert_data);

        new_node ->next = p;

        p_pro->next = new_node;

    }

}

void insert_node_by_tail(Node *head_node, int data)

{

    Node *p_tail = head_node;

    Node *new_node = create_node(data);

    while(p_tail->next != NULL)

    {

       p_tail = p_tail->next;

    }

    p_tail->next = new_node;

}

void print_list(Node *list)

{

    Node *p = list->next;

    while (p)

    {

        printf("%d\t", p->data);

        p = p->next;

    }

    printf("\n");

}

int main(int argc, char const *argv[])

{

    printf("list operation \n");

    Node *node_list = create_list();

    insert_node_by_head(node_list, 1);

    printf("数据: \n");

    print_list(node_list);

    printf("表头插入法: \n");

    insert_node_by_head(node_list, 2);

    insert_node_by_head(node_list, 4);

    print_list(node_list);

    printf("指定位置插入法: \n");

    insert_node_by_pos(node_list, 3, 2);

    print_list(node_list);

    printf("表尾插入法: \n");

    insert_node_by_tail(node_list, 0);

    insert_node_by_tail(node_list, -1);

    print_list(node_list);

    return 0;

}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Fite

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值