首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >链表头部插入节点

链表头部插入节点

作者头像
用户7272142
发布2023-10-11 21:06:23
发布2023-10-11 21:06:23
4930
举报
文章被收录于专栏:Republic博客Republic博客

之前我们谈到过链表的实现,现在我们就用代码实现链表的第一种情况,头部插入节点。

我们就按照这个图创建先创建头部插入节点

代码语言:javascript
复制
#include<stdio.h>
#include<stdlib.h>
#pragma warning (disable:4996)
struct Node
{
    int data;
    struct Node* link;
};
struct Node* head;//头节点
void Insert(int x);
void Printf();
int main()
{
    head == NULL;
    int x,n;
    printf("请输入你要插入的节点个数\n");
    scanf("%d", &n);

    for (size_t i = 0; i < n; i++)
    {
        printf("输入你要插入的链表数据\n");
        scanf("%d", &x);
        Insert(x);
        Printf();
    }
}
void Insert(int x)
{
    Node* temp = (Node*)malloc(sizeof(Node));
    temp->data = x;
    temp->link = head;
    head = temp;
}
void Printf()
{
    Node* temp = head;
    printf("List is");
    while (temp!=NULL)
    {
        printf(" %d ", temp->data);
        temp = temp->link;
    }
    printf("\n");
}

先创建一个头节点指针置NULL代表链表现在为空,我们通过insert函数给增加的节点分配内存,然后让节点的link指向head(此时head是NULL) 再将head指向此节点,我们大致上就创建出了下图的节点

此时已经有一个节点,head!=NULL 通过 temp->link = head; head = temp; 我们可以巧妙地将插入节点的link指向下一个节点,同时又将head指向插入的节点。

head指向是指向后面节点的,所以我们新创建的temp可以直接指向head,也就是指向了下一个节点。 代码里面我将head作为全局变量方便使用,如果我们将head作为局部变量,我这里简单介绍一下,前面都有介绍过解引用和引用 1.通过参数值传递insert时,我们不会修改head的值,这是不被允许的,我们可以把head返回出来,然后再传递给print 2.通过二级指针解引用,达到修改head的值,此方法不用返回 head指针

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-07-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档