链表任意位置删除节点

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

链表任意位置删除节点

直接附上代码以供参考:

#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);
	}
}
C++
C语言

链表任意位置插入节点

2024-11-14 15:00:33

C语言

反转链表(迭代)

2024-11-14 15:08:47

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索

Powered by atecplugins.com