初学者求解一道数据结构[C语言版]的题目

已知线性表中的元素以值递增有序排列,并以单链表做储存结构.试写一高效算法,删除表中大于MINK且小于MAXK的元素(若表中存在这样的元素).同时释放被删除的结点空间,并且分析算法复杂度.注意,MINK,MAXK是给定两个参变量,他们的值可以和表中的元素相同,也可以不同.谢谢!
一个人都没有来?

/***
*
*题目:已知线性表中的元素以值递增有序排列,并以单链表做存储结构。试写一高效的算法,
* 删除表中所有值大于 mink 且小于 maxk 的元素(若表中存在这样的元素),同时释放
* 被删除节点空间,并分析你的算法的时间复杂度(注意:mink 和 maxk 是给定的两个
* 参变量,它们的值可以和表中的元素相同,也可以不同)
*
****/

#include <stdio.h>
#include <stdlib.h>
#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;
}
温馨提示:内容为网友见解,仅供参考
无其他回答

初学者求解一道数据结构[c语言版]的题目
题目:已知线性表中的元素以值递增有序排列,并以单链表做存储结构。试写一高效的算法,删除表中所有值大于 mink 且小于 maxk 的元素(若表中存在这样的元素),同时释放 被删除节点空间,并分析你的算法的时间复杂度(注意:mink 和 maxk 是给定的两个 参变量,它们的值可以和表中的元素相同,也...

数据结构c语言版一道题求解
,element[n - 1]存放线性表中的元素 *\/}; typedef struct SeqList *PSeqList;PSeqList createNullList_seq(int m ) {\/* 创建新的顺序表 *\/ PSeqList palist= (PSeqList)malloc(sizeof(struct SeqList)); if (palist!=NULL){ palist->element= (DataType*)malloc(sizeo...

数据结构(C语言版),求高手解决。。
1.二叉树是度为2的有序树( )【答案】× 2.完全二叉树一定存在度为1的结点( )【答案】× 3.深度为K的二叉树中结点总数≤2k-1( )【答案】√ 4.由一棵二叉树的先序序列和后序序列可以惟一确定它( )【答案】× 5.完全二叉树中,若一个结点没有左孩子,则它必是树叶...

求一道数据结构C语言的
在main函数的最后,我们调用fun1(n)来启动计算,并在输出结果前打印“=”。接下来,使用printf函数输出fun(n,x)的结果。这段代码完整地实现了您的需求。通过输入n和x,我们能够计算并显示函数fun(n,x)的结果。我们希望这段代码能满足您的数据结构和C语言学习需求。

一道C语言里的数据结构问题
这个是计算n趋于无穷大时的阶次,因此阶次从低到高的次序为:31+1\/n , 100n + nlog2(n), 20log2(2^n) + n^2, 2^n + 89n^3

数据结构c语言版问题
按列为主序存放于一个连续的存储空间中 a[10,20]一列10个元素,那么a[6,2],2表示第三列(前面有0,1),前面两列就是20 第三列6个,得到20+6=26,开始地址为200,则200+26=226

一份C语言的数据结构题目,急求答案
第一题;Search (BiTree t,ElemType x){ struct nodee;{BiTree pp;int tag;}s[100];int top; Bitree p;top=0; p=t;while(p!=NULL&&p->p!=NULL){while(p!=NULL&&p->data!=x){top++;s[top].pp=p;s[top].tag=0;p=p->lchild;} if(p!=NULL&&p->data==x){for(i=1...

一道数据结构(c语言描述)题,希望大佬帮我看看,萌新不会?
include "stdio.h"struct PLU{ double r,i;};PLU plu_add(PLU a,PLU b,char c){\/\/运算函数 PLU t;if(c=='+'){\/\/+ t.r=a.r+b.r;t.i=a.i+b.i;} else if(c=='-'){\/\/- t.r=a.r-b.r;t.i=a.i-b.i;} else if(c=='*'){\/\/ t.r=a.r*b.r-a.i*b.i...

c语言数据结构问题求解
A[0][0]和A[2][2]相差了(2*n+2)个元素,与A[3][3]相差了(3*n+3)个元素,所以,676-644=32,32\/2*3=48,644+48=692,选择c项。满意请采纳呦~

求教一题数据结构(C语言),第5题
选B 每个元素占1字节,那就是算[0][0]与[5][4]之间相差几个元素。设.[0][0]再内存中的地址为1 那么,[5][4]再内存中地址等于 1+2+3+4+5+5=20 所以两者之差为19

相似回答