#include
#include
#include
#include
#define LIST_INIT_SIZE 100 //max size
#define LISTINCREMENT 10 //add size
typedef int ElemType;
struct SQLIST
{
ElemType *elem; //the address
int length; //current size
int listsize; //current memory
};
//init list
int InitList(struct SQLIST *L)
{
L->elem = (ElemType *)malloc(sizeof(ElemType) * LIST_INIT_SIZE);
if(!L->elem)
perror("malloc error");
L->length = 0;
L->listsize = LIST_INIT_SIZE;
return 1;
}
void DeleteList(ElemType key1, ElemType key2, struct SQLIST *L)
{
int i,j = 0;
int k;
int len = L->length;
if(key1 < key2 || key1 > L->elem[0] || key2 < L->elem[len])
{
for(i = 0; i< len; i++)
{
if(L->elem[i] > key1 && L->elem[i] < key2)
{
for(k=i;k
L->elem[k] = L->elem[k+1];
len--;
i--;
}
}
}
/*else if(key1 > key2 || key1 < L->elem[length] || key2 > L->elem[0])
{
while(L->elem[i] > key2 && L->elem[i] < key1)
{
L->elem[i] = L->elem[i+1];
i++;
}
}*/
L->length = len; //last length;
}
int main(void)
{
int i, j;
int array[]= {1,2,3,4,5,6,7,8,9,10};
struct SQLIST SqList;
if(InitList(&SqList) != 1)
perror("init error");
for(i=0; i
SqList.elem[i] = array[i];
SqList.length = sizeof(array)/sizeof(ElemType);
DeleteList(3, 8, &SqList);
for(j=0;j
printf("%d", SqList.elem[j]);
return 0;
}
这是我自己写的 你参考下吧 有不懂的再来问我吧!