#include<stdio.h>/*2009/08/29完成*/ #include<stdlib.h>/*删除递增线性表中值大于min且小于max的元素*/ #include <malloc.h> #define ERROR 0 #define OK 1 typedef int ElemType; typedef struct Node { ElemType data; struct Node *next; }Node,*LinkList;/*LinkList为结构指针类型,用来说明头指针变量*/ void initlinklist(LinkList *L)/*初始化单链表*/ { *L=(LinkList)malloc(sizeof(Node)); (*L)->next=NULL; } void Create(LinkList L)/*建立单链表*/ { Node *s,*r; char c; int flag=1; r=L; while(flag) { scanf("%d",&c); if(c!=-1)/*当输入-1时建表结束*/ { s=(Node *)malloc(sizeof(Node)); s->data=c; r->next=s; r=s; } else { flag=0; r->next=NULL; } } } int ListLength(LinkList L) { int i=0; Node *p; p=L->next; while(p!=NULL) {p=p->next; i++;} return i; } void print(LinkList L) { Node *p; p=L->next; printf("/nThe list value is:"); while(p!=NULL) { printf("%d ",p->data); p=p->next; } } void Delete_Between(LinkList L,int min,int max) { Node *p,*q; if(max>=min) { p=L; q=p->next; while(q!=NULL&&q->data<=min) { p=q; q=q->next; } while(q!=NULL&&q->data<max) { p->next=q->next; free(q); q=p->next; } } } void main() { LinkList LA; Node *p,*q; int i,len; char min,max; initlinklist(&LA); printf("please Create the LA,using the -1 End(the increasing):/n"); Create(LA); print(LA); getchar(); printf("/nplease input the value of min and max:"); scanf("%d %d",&min,&max); Delete_Between(LA,min,max); print(LA); }