C语言,已知线性表中的元素以值递增有序排列,并以单链表作存储结构,高效算法怎么算?

2025-03-03 20:09:08
推荐回答(2个)
回答1:

一个功能函数:

#include

#include

typedef struct list{

int data;

struct list *next;

}list;

void fun(list *head,int mink ,int maxk){

list *pre,*p;

pre=head;

p=pre->next;

while(p){

if(p->data>mink&&p->data

pre->next=p->next;

p=pre->next;

}

else{

pre=pre->next;

p=pre->next;

}

}

}

1、C语言是一门通用计算机编程语言,应用广泛。

2、C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

3、尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。

回答2:

一个功能函数:

#include#include typedef struct list{    int data;    struct list *next; }list; void fun(list *head,int mink ,int maxk){    list *pre,*p;    pre=head;    p=pre->next;    while(p){        if(p->data>mink&&p->datanext=p->next;            p=pre->next;        }        else{            pre=pre->next;            p=pre->next;        }    }}

typedef struct LNode{


ElemType      data;


struct LNode *next;


} LNode, *LinkList;


void DeleteSome(LinkList &L, ElemType mink, ElemType maxk)


{   LinkList p,q,w;


p=L->next;


w=NULL;


while(p->data<=mink)  //先将第一个结点的数据跟mink比较,


{w=p;


p=p->next;           //如果小于mink,则指向下一个结点


if(!p) break;         //如果大于mink,跳出
}


while(p->data


{q=p;                  //如果大于,则跳出


p=q->next;            //如果小于则将在有效范围内的数据删除并释放结点空间


free(q);


if(!p) break;


}
w->next=p;           //将删除后的前后两段重新链接


}