当前位置: 首页 > news >正文

从单向链表中删除指定值的节点

输入一个单向链表和一个节点的值,从单向链表中删除等于该值的节点,删除后如果链表中无节点则返回空指针。
链表的值不能重复。构造过程,例如输入一行数据为:6 2 1 2 3 2 5 1 4 5 7 2 2则第一个参数6表示输入总共6个节点,第二个参数2表示头节点值为2,剩下的2个一组表示第2个节点值后面插入第1个节点值,为以下表示:1 2 表示为2->1链表为2->1,3 2表示为2->3链表为2->3->1,5 1表示为1->5链表为2->3->1->5,4 5表示为5->4链表为2->3->1->5->4,7 2表示为2->7链表为2->7->3->1->5->4最后的链表的顺序为 2 7 3 1 5 4最后一个参数为2,表示要删掉节点为2的值删除,则结果为 7 3 1 5 4
数据范围:链表长度满足1≤n≤1000,节点中的值满足0≤val≤10000 测试用例保证输入合法。
输入描述:输入一行,有以下4个部分:
1 输入链表结点个数
2 输入头结点的值
3 按照格式插入各个结点
4 输入要删除的结点的值
输出描述:输出一行输出删除结点后的序列,每个数后都要加空格。
输入:5 2 3 2 4 3 5 2 1 4 3
输出:2 5 4 1
说明:形成的链表为2->5->3->4->1删掉节点3,返回的就是2->5->4->1

输入:6 2 1 2 3 2 5 1 4 5 7 2 2
输出:7 3 1 5 4

#include <stdio.h>
#include <stdlib.h>typedef struct tagNode {int val;struct tagNode *next;
} Node;static void insertNode(Node *head, int aim, int val) {while(head != NULL) {if(head->val == aim) {Node *temp = (Node*)malloc(sizeof(Node));temp->val = val;temp->next = head->next;head->next = temp;return;}head = head->next;}
}static void delNode(Node **head, int aim)
{if ((*head)->val == aim) {Node *temp = (*head)->next;free(*head);*head = temp;return;}Node *iter = *head;while (iter->next != NULL) {if (iter->next->val == aim) {Node *temp = iter->next;iter->next = temp->next;free(temp);return;}iter = iter->next;}
}static void printList(Node *head) {while(head != NULL) {printf("%d ", head->val);head = head->next;}printf("\n");
}static void freeList(Node *head) {while(head != NULL){Node *next = head->next;free(head);head = next;}
}int main() {int num = 0;int headVal = 0;int delVal = 0;scanf("%d %d", &num, &headVal);Node *head = (Node*)malloc(sizeof(Node));head->next = NULL;head->val = headVal;int i;for (i = 1; i < num; i++) {int aim = 0;int val = 0;scanf("%d %d", &val, &aim);insertNode(head, aim, val);}scanf("%d", &delVal);delNode(&head, delVal);printList(head);freeList(head);return 0;
}
http://www.lryc.cn/news/256433.html

相关文章:

  • Vue2与Vue3的语法对比
  • 实时动作识别学习笔记
  • 5G常用简称
  • 自动化测试框架性能测试报告模板
  • 【SpringBoot】解析Springboot事件机制,事件发布和监听
  • 华为ensp实验——基于全局地址池的DHCP组网实验
  • 如何选择一款安全可靠的跨网安全数据交换系统?
  • 基于c++版本的数据结构改-python栈和队列思维总结
  • 算法通关村第七关—迭代实现二叉树的遍历(黄金)
  • Java期末复习题之封装
  • 湖科大计网:计算机网络概述
  • 每日一道c语言
  • (C)一些题11
  • 多级路由component页面不加载
  • 【原创】Mac mini M1安装home-brew
  • 【python交互界面】实现动态观察图像在给定HSV范围的区域显示
  • Vue3中定义变量是选择ref还是reactive?
  • 数据结构 | 查漏补缺之哈希表、最短路径、二叉树与森林的转换
  • SpringCloud
  • fastadmin嵌套关联查询,thinkPHP5嵌套关联查询
  • Power BI - 5分钟学习拆分列
  • ELK(四)—els基本操作
  • 【100天精通Python】Day75:Python机器学习-第一个机器学习小项目_鸾尾花分类项目(上)
  • gitlab高级功能之容器镜像仓库
  • 线程的使用(二)
  • k8s之镜像拉取时使用secret
  • mysql面试题——MVCC
  • 【华为数据之道学习笔记】1-2华为数字化转型与数据治理
  • 微服务01
  • 作业12.8