#include<stdio.h>
#include<stdlib.h>
typedef int ElemType;
typedef struct LNode
{
ElemType data;
struct LNode *next;
} LNode,*Linklist;
Linklist Createlist_L(Linklist first,int n) //尾插法创建链表
{
Linklist rear,s;
first=(Linklist)malloc(sizeof(LNode)); //头节点
rear=first; //尾节点
for(int i=0; i<n; i++)
{
s=(Linklist)malloc(sizeof(LNode)); //建立新节点
scanf("%d",&s->data);
rear->next=s; //将新节点插入到队尾
rear=rear->next;
}
rear->next=NULL; //将尾节点指向空
return first;
}
void Delete(Linklist L,int mn,int mx)
{
Linklist p,q,flag;
p=L;
q=L->next;
while(q!=NULL&&q->data<=mn) //找到连接开始点
{
p=p->next;
q=q->next;
}
flag=p;
while(q!=NULL&&q->data<mx) //找到连接接入点
{
q=q->next;
}
flag->next=q; //连接
}
void Printlist(Linklist L) //输出
{
L=L->next; //跳过头节点
while(L!=NULL)
{
printf("%d\n",L->data);
L=L->next;
}
return ;
}
int main()
{
Linklist i;
int n;
int min,max;
scanf("%d%d%d",&n,&min,&max);
i=Createlist_L(i,n);
Printlist(i);
Delete(i,min,max);
Printlist(i);
return 0;
}
单调链表删值
最新推荐文章于 2023-04-22 23:36:17 发布