求解一道数据结构的题目,用C语言解,考试用的,急,谢谢。
1个回答
展开全部
/***
*
*题目:已知线性表中的元素以值递增有序排列,并以单链表做存储结构。试写一高效的算法,
*
删除表中所有值大于
mink
且小于
maxk
的元素(若表中存在这样的元素),同时释放
*
被删除节点空间,并分析你的算法的时间复杂度(注意:mink
和
maxk
是给定的两个
*
参变量,它们的值可以和表中的元素相同,也可以不同)
*
****/
#include
#include
#include
"dynalinklist.h"
void
delmminmax(linklist
*l,
int
min,
int
max)
{
linklist
p
=
(*l)->next,
q
=
(*l),
r;
while
(p
&&
p->data
<=
min)
{
q
=
p;
p
=
p->next;
}
while
(
p
&&
p->data
<
max)
{
r
=
p;
p
=
p->next;
q->next
=
p;
free(r);
}
}
//算法的时间复杂度为o(n)
int
main()
{
linklist
l;
elemtype
e,
min,
max;
initlist(&l);
printf("输入8个元素建立线性表l(元素递增有序):\n");
for
(int
i=1;
i<=8;
i++)
{
scanf("%d",
&e);
listinsert(&l,
i,
e);
}
printf("表l是:\n");
listtraverse(l,
visit);
printf("请输入待删除的元素的区间是(min,max):\n");
scanf("%d%d",
&min,
&max);
delmminmax(&l,min,max);
printf("删除(%d,%d)之间的元素后表l是:\n",min,max);
listtraverse(l,
visit);
return
0;
}
*
*题目:已知线性表中的元素以值递增有序排列,并以单链表做存储结构。试写一高效的算法,
*
删除表中所有值大于
mink
且小于
maxk
的元素(若表中存在这样的元素),同时释放
*
被删除节点空间,并分析你的算法的时间复杂度(注意:mink
和
maxk
是给定的两个
*
参变量,它们的值可以和表中的元素相同,也可以不同)
*
****/
#include
#include
#include
"dynalinklist.h"
void
delmminmax(linklist
*l,
int
min,
int
max)
{
linklist
p
=
(*l)->next,
q
=
(*l),
r;
while
(p
&&
p->data
<=
min)
{
q
=
p;
p
=
p->next;
}
while
(
p
&&
p->data
<
max)
{
r
=
p;
p
=
p->next;
q->next
=
p;
free(r);
}
}
//算法的时间复杂度为o(n)
int
main()
{
linklist
l;
elemtype
e,
min,
max;
initlist(&l);
printf("输入8个元素建立线性表l(元素递增有序):\n");
for
(int
i=1;
i<=8;
i++)
{
scanf("%d",
&e);
listinsert(&l,
i,
e);
}
printf("表l是:\n");
listtraverse(l,
visit);
printf("请输入待删除的元素的区间是(min,max):\n");
scanf("%d%d",
&min,
&max);
delmminmax(&l,min,max);
printf("删除(%d,%d)之间的元素后表l是:\n",min,max);
listtraverse(l,
visit);
return
0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
光点科技
2023-08-15 广告
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件...
点击进入详情页
本回答由光点科技提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询