这个你看看.希望可能帮到你.
#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 */