前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >任意位置删除节点

任意位置删除节点

作者头像
用户7272142
发布2023-10-11 21:04:55
发布2023-10-11 21:04:55
13800
代码可运行
举报
文章被收录于专栏:Republic博客Republic博客
运行总次数:0
代码可运行

删除任意位置节点和添加任意位置节点其实差不多,都是要先找到n-1的位置,然后进行下一步的操作。 唯一有区别的是,需要用断开链接之后,需要用free把节点在堆上的内存清理掉。

直接附上代码以供参考:

代码语言:javascript
代码运行次数:0
复制
#include<stdio.h>
#include<stdlib.h>
#pragma warning (disable:4996)
struct Node
{
    int data;
    struct Node* link;
};
struct Node* head;//头节点
void Insertnew(int x, int n);
void Printf();
void Delete(int n);
int main()
{
    head == NULL;

    Insertnew(2, 1);
    Insertnew(4, 2);
    Insertnew(7, 1);
    Insertnew(10, 2);
    Delete(1);
    Delete(2);
    Printf();

}
void Insertnew(int x, int n)
{
    Node* temp = new Node;
    temp->data = x;
    temp->link = NULL;
    if (n == 1)
    {
        temp->link = head;
        head = temp;
        return;
    }
    Node* temp1 = head;
    for (size_t i = 0; i < n - 2; i++)
    {
        temp1 = temp1->link;
    }
    temp->link = temp1->link;
    temp1->link = temp;
}
void Printf()
{
    Node* temp = head;
    printf("List is");
    while (temp != NULL)
    {
        printf(" %d ", temp->data);
        temp = temp->link;
    }
    printf("\n");
}
void Delete(int n)
{
    Node* temp = head;
    if (n==1)
    {
        head = temp->link;
        free(temp);
    }
    else
    {
        for (size_t i = 0; i < n - 2; i++)
        {
            temp = temp->link;
        }
        Node* temp1 = temp->link;
        temp->link = temp1->link;
        free(temp1);
    }

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

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

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

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

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