已知线性表中的元素以值递增有序排列,并以单链表做存储结构.试写一高效的算法,删除表中所有值大于mink 且小于 maxk 的元素(若表中存在这样的元素)同时释放***节点空间,并分析你的算法的时间复杂度(注意:mink 和 maxk 是给定的两个参变量,它们的值可以和表中的元素相同,也可以不同).
这个你看看.希望可能帮到你.
#include
#include
#include
typedef int ElemType;
typedef struct LNode
{ ElemType data; /* 数据子域 */
struct LNode *next; /* 指针子域 */
}LNode; /* 结点结构类型 */
LNode *L;
/* 函数声明 */
LNode *creat_L();
void delete_L(LNode *L,int i); //返回值格式变为空
/* 建立线性链表*/
LNode *creat_L()
{
LNode *h,*p,*s; ElemType x;
h=(LNode *)malloc(sizeof(LNode)); /* 分配头结点 */
h->next=NULL;
p=h;
printf("输入一串数字(以-1结束):ndata= ");
scanf("%d",&x); /* 输入第一个数据元素 */
while( x!=-1) /* 输入-1,结束循环 */
{
s=(LNode *)malloc(sizeof(LNode)); /* 分配新结点 */
s->data=x; s->next=NULL;
p->next=s; p=s;
printf("data= ");
scanf("%d",&x); /* 输入下一个数据*/
}
return(h);
} /* creat_L */
/* 输出单链表中的数据元素*/
void out_L(LNode *L)
{
LNode *p;
p=L->next;
printf("n数据是:");
while(p!=NULL)
{
printf("%5d",p->data);
p=p->next;
}
} /* out_link */
/* 删除大于x小于y的值*/
void delete_L(LNode *L,int a,int b)
{
LNode *p,*q;
p=L;
q=p;
p=p->next;
if(p==NULL) printf("ERROR:链表为空");
while(p!=NULL)
{
if((p->data >a) && (p->data next=p->next;
free(p);
p=q->next;
}
else
{ q=p;
p=p->next;
}
}
} /* delete_L */
void main()
{
int a,b;
L=creat_L( ); out_L(L);
printf("nn请输入你要删除的元素的范围x和y:n");
scanf("%d%d",&a,&b);
delete_L(L,a,b); out_L(L);
printf("n");
} /* main */
-
点赞数:0回答数:1
-
点赞数:0回答数:1
-
点赞数:0回答数:1
-
点赞数:0回答数:1
-
点赞数:0回答数:1
-
点赞数:0回答数:1
-
点赞数:0回答数:1
-
点赞数:0回答数:1
-
点赞数:0回答数:1
-
点赞数:0回答数:1

最新问答: 平行四边形面积公式? "真正的友谊"英文怎么说 极坐标方程cosθ=2/√2(p>=0)表面曲线是? 甲、乙两数和25.3,甲数小数点去掉变成整数,就与乙数相等,甲数原来是几? Supper is ready,Kate.-------__________,Mum.横线填什么呢?A.I'm comi 可能的反义词是一定 还是不可能? 宛如巨龙,地动山摇用了什么修辞方法 “”带着你的爱,翻过高山大海”这是哪首歌里的歌词 用it is important for sb to do sth造句 床英文怎么写 e的x减一次方是不是复合函数每次很复杂的函数求导的大题每次都导不对 有什么方法没有 1+1=?有几种回答,说明理由. 一道关于浮力的物理题,八年纪的! 3/2-5/6+7/12-9/20+11/30-13/42 在社会生活中,一个“真”难能可贵.庄子曰:“真者,精诚之至也,不精不诚,不能动人 作文800字左右 y=3/2sin(1/3x-π/3)的图像及列表 三角形相似有哪些条件? 为什么装水的瓶子比装沙子的瓶子快【两个一样重】 有关电容的,两平行金属板与电源相连,两金属板之间的电势差不是等于电源电压吗? ever是什么意思?.