首页 > 其他分享 >数据结构练习笔记——删除单链表中某区间的数

数据结构练习笔记——删除单链表中某区间的数

时间:2023-07-20 09:11:07浏览次数:31  
标签:Node 单链 删除 int next 表中 数据结构

删除单链表中某区间的数

【问题描述】已知某带头结点的单链表中存放着若干整数,请删除该单链表中元素在[x, y]之间的所有结点,
要求算法的时间复杂度为O(n),空间复杂度为O(1)。
【输入形式】
​ 第一行:单链表中元素个数m
​ 第二行:单链表中的m个整数
​ 第三行:要删除的元素值所在区间[x,y]对应的x和y
【输出形式】除元素后的单链表中剩下的元素值
【样例输入】
​ 5
​ 13 24 50 33 56
​ 30 50
【样例输出】13 24 56

#include  <iostream>
using  namespace  std;
struct  Node  {
	int  data;
	Node  *next;
};
typedef  Node  *LinkList;
void  createList(LinkList  &L,int  n)  {
	Node  *p,*r;
	L=new  Node;
	L->next=NULL;
	r=L;
	for(int  i=1;  i<=n;  i++)  {
		p=new  Node;
		cin>>p->data;
		r->next=p;
		r=p;
	}
	r->next=NULL;
}
void  printList(LinkList  L)  {
	Node  *p;
	p=L->next;
	while(p)  {
		cout<<p->data<<"  ";
		p=p->next;
	}
	cout<<endl;
}
//----------------------------
void delElem(LinkList L, int x, int y) {
    Node *p,*q;
    p=L;
    while(p->next) {
        if(p->next->data>=x&&p->next->data<=y) {
            q=p->next;
            p->next=q->next;
            delete q;
        } else {
            p=p->next;
        }
    }
}
//----------------------------
int  main()  {
	LinkList  L;
	int  m;
	int  x,y;
	cin>>m;//单链表中元素个数
	createList(L,m);//尾插入法创建带头节点的单链表
	cin>>x>>y;//要删除的元素值所在区间[x,y],包含x和y
	delElem(L,x,y);//删除单链表中x-y之间的数
	printList(L);//输出结果单链表中的所有数据
	return  0;
}

记录一些数据结构学习过程的习题代码,便于日后查看。如有错误,欢迎交流指正。

标签:Node,单链,删除,int,next,表中,数据结构
From: https://www.cnblogs.com/zhuannnn/p/17567363.html

相关文章

  • 20230629-可持久化数据结构 1
    20230629权值线段树P3369【模板】普通平衡树题目大意传送门Solution可以用平衡树实现但用权值线段树代码量更少且速度更快注意前驱和后继的写法H_W_Y-Coding#include<bits/stdc++.h>usingnamespacestd;#definelb(x)lower_bound(b+1,b+cnt+1,x)-bconstintm......
  • 20230630-可持久化数据结构 2
    20230630P3919【模板】可持久化线段树1(可持久化数组)题目大意传送门题目已经说得很清楚了Solution一道可持久化线段树的板子题注意数组开大一点!!!H_W_Y-Coding#include<bits/stdc++.h>usingnamespacestd;constintmaxn=2e6+10;//开大一点intn,m,a[maxn],rt[maxn......
  • 数据结构与算法 头歌 图的拓扑排序算法
    数据结构与算法之图的拓扑排序算法导言拓扑排序是对有向无环图(DirectedAcyclicGraph,DAG)进行排序的一种算法。在实际开发中,拓扑排序算法常用于解决任务调度、编译顺序等问题。本文将介绍拓扑排序算法的实现过程,并帮助初学者理解该算法的原理及代码实现。拓扑排序流程以下......
  • MySQL把choose表中的report改名为score,数据类型改为float; 将choose表的score默
    MySQL把choose表中的report改名为score,数据类型改为float;将choose表的score默认值设为0流程步骤步骤操作1.连接至MySQL数据库2.切换至对应数据库3.修改表结构,将report改名为score并更改数据类型4.设定score字段的默认值为0具体步骤与代码示例步骤......
  • C/C++数据结构课程设计题目[2023-07-19]
    C/C++数据结构课程设计题目[2023-07-19]数据结构课程设计题目基本要求:1、每人1题,如果系统具有界面以及功能复杂,可以2人合作一题。2、可以自拟题目,难度不低于给定题目,且自拟的题目需要经过老师审核通过。3、要求实现一个界面美观、功能完整、具有实用性的系统。4、不限制......
  • 数据结构--二叉平衡树
    二叉平衡树回顾:二叉排序树的查找二叉排序树的不平衡会影响查找效率,所有我们要尽量让二叉树的形态均衡.AVL树(平衡二叉树)必须是二叉排序树左子树和右子树的高度之差的绝对值小于等于1左子树和右子树也是平衡二叉排序树平衡因子该结点左子树与右子树的高度差.平......
  • 数据结构与算法:图有哪些关键核心知识点
    图是一种复杂的数据结构,它由顶点和边组成,可以表示任意两个数据元素之间的关系。图有以下一些基本概念和术语:图可以分为无向图和有向图,根据边是否有方向。图可以分为简单图和多重图,根据边是否重复或自环。图可以分为完全图和非完全图,根据任意两个顶点之间是否存在边或弧。图......
  • 图表中的人口变迁:数据可视化的力量
    人口是一个关乎我们生活的重要话题,而数据可视化技术为我们提供了一种全新的方式来理解和解读人口变化的趋势。通过将大量的人口数据转化为直观的图表和图像,数据可视化帮助我们更好地观察、分析和解释人类发展的重要特征。 数据可视化揭示人口趋势的第一步是收集和整理人口相关......
  • python 删除列表中字符串
    Python删除列表中的字符串在使用Python进行编程时,经常需要对列表进行操作和修改。有时候,我们可能需要删除列表中的特定字符串。本文将介绍如何使用Python删除列表中的字符串,并提供代码示例。列表和字符串在了解如何删除列表中的字符串之前,我们需要先了解列表和字符串的基本概念......
  • 数据结构刷题
    山理工数据结构刷题专题1--顺序表专题2--栈和队列专题3--串和数组专题4--二叉树专题5--二叉查找树和平衡二叉树树结构练习——排序二叉树的中序遍历#include<bits/stdc++.h>#defineyescout<<"YES"<<'\n'#defineno cout<<"NO"<<'\n'usingnamespace......