#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define OK 1
#define ERROR 0
typedef int Status;
typedef int ElementType;
typedef struct
{
ElementType *data;
int length;
}Sqlist;
int MAXSIZE = 20;
Status initlist(Sqlist *list);
Status Lengthlist(Sqlist list);
Status insertlist(Sqlist *list, ElementType x);
Status update(Sqlist *list, int index, ElementType x);
Status Printlist(Sqlist *list);
Status isfull(Sqlist *list);
Status delete(Sqlist *list, int index);
Status insert_index(Sqlist *list, int index, ElementType x);
void sort(Sqlist *list);
Status clearlist(Sqlist *list);
Status querylist(Sqlist list, int x);
int main(int argc, char **argv)
{
int ret, i;
Sqlist list;
ret = initlist(&list);
if(ret == ERROR)
{
return -1;
}
for(i = 0; i < 30; i++)
{
ret = insertlist(&list,i);
if(ret == ERROR)
{
return -1;
}
}
isfull(&list);
update(&list, 5, 100);
delete(&list, 5);
sort(&list);
insert_index(&list, 0, 1000);
insert_index(&list, 6, 120);
querylist(list, 1000);
clearlist(&list);
Printlist(&list);
return 0;
}
Status initlist(Sqlist *list)
{
list->length = 0;
list->data = (ElementType*)malloc(MAXSIZE*sizeof(ElementType));
if(list->data == NULL)
{
return ERROR;
}
return OK;
}
Status Lengthlist(Sqlist list)
{
return list.length;
}
Status insertlist(Sqlist *list, ElementType x)
{
if(ERROR == isfull(list))
{
return ERROR;
}
list->data[list->length] = x;
list->length++;
}
Status update(Sqlist *list, int index, ElementType x)
{
if( index < 0||index >= Lengthlist(*list))
{
return ERROR;
}
list->data[index] = x;
}
Status Printlist(Sqlist *list)
{
int i;
for(i = 0; i < Lengthlist(*list); i++)
{
printf("%d\n", list->data[i]);
}
}
//排序 从小到大
void sort(Sqlist *list)
{
int i,j;
for( i = 0; i < Lengthlist(*list) - 1; i++)
for(j = 0; j < Lengthlist(*list) - 1 - i;j++)
{
if(list->data[i] > list->data[i + 1])
{
int t = list->data[i];
list->data[i] = list->data[i + 1];
list->data[i + 1] = t;
}
}
}
int ADD = 5;
Status isfull(Sqlist *list)
//排序 从小到大
{
if(list->length == MAXSIZE)
{
list->data = realloc(list->data, (ADD + MAXSIZE)*sizeof(ElementType));
if(NULL == list->data)
{
return -1;
}
MAXSIZE += ADD;
}
}
Status delete(Sqlist *list, int index)
{
int i;
if(index >= Lengthlist(*list))
{
return ERROR;
}
for(i = index; i < Lengthlist(*list)-1; i++)
{
list->data[i] = list->data[i + 1];
}
list->length--;
}
Status insert_index(Sqlist *list, int index, ElementType x)
{
int i;
if(index >= Lengthlist(*list))
{
return ERROR;
}
for(i = Lengthlist(*list) - 1; i >= index; i--)
{
list->data[i + 1] = list->data[i];
}
list->data[index] = x;
list->length++;
return OK;
}
Status clearlist(Sqlist *list)
{
int i;
memset(list->data, 0, Lengthlist(*list)*sizeof(ElementType));
list->length = 0;
free(list->data);
list->data = NULL;
MAXSIZE = 20;
return OK;
}
Status querylist(Sqlist list, ElementType x)
{
int count = 0;
int i;
for(i = 0; i < Lengthlist(list); i++)
{
if(list.data[i] == x)
{
printf("%d\n", i);
count++;
}
}
printf("together = %d,daying = %d", count, x);
}
#include <stdlib.h>
#include <string.h>
#define OK 1
#define ERROR 0
typedef int Status;
typedef int ElementType;
typedef struct
{
ElementType *data;
int length;
}Sqlist;
int MAXSIZE = 20;
Status initlist(Sqlist *list);
Status Lengthlist(Sqlist list);
Status insertlist(Sqlist *list, ElementType x);
Status update(Sqlist *list, int index, ElementType x);
Status Printlist(Sqlist *list);
Status isfull(Sqlist *list);
Status delete(Sqlist *list, int index);
Status insert_index(Sqlist *list, int index, ElementType x);
void sort(Sqlist *list);
Status clearlist(Sqlist *list);
Status querylist(Sqlist list, int x);
int main(int argc, char **argv)
{
int ret, i;
Sqlist list;
ret = initlist(&list);
if(ret == ERROR)
{
return -1;
}
for(i = 0; i < 30; i++)
{
ret = insertlist(&list,i);
if(ret == ERROR)
{
return -1;
}
}
isfull(&list);
update(&list, 5, 100);
delete(&list, 5);
sort(&list);
insert_index(&list, 0, 1000);
insert_index(&list, 6, 120);
querylist(list, 1000);
clearlist(&list);
Printlist(&list);
return 0;
}
Status initlist(Sqlist *list)
{
list->length = 0;
list->data = (ElementType*)malloc(MAXSIZE*sizeof(ElementType));
if(list->data == NULL)
{
return ERROR;
}
return OK;
}
Status Lengthlist(Sqlist list)
{
return list.length;
}
Status insertlist(Sqlist *list, ElementType x)
{
if(ERROR == isfull(list))
{
return ERROR;
}
list->data[list->length] = x;
list->length++;
}
Status update(Sqlist *list, int index, ElementType x)
{
if( index < 0||index >= Lengthlist(*list))
{
return ERROR;
}
list->data[index] = x;
}
Status Printlist(Sqlist *list)
{
int i;
for(i = 0; i < Lengthlist(*list); i++)
{
printf("%d\n", list->data[i]);
}
}
//排序 从小到大
void sort(Sqlist *list)
{
int i,j;
for( i = 0; i < Lengthlist(*list) - 1; i++)
for(j = 0; j < Lengthlist(*list) - 1 - i;j++)
{
if(list->data[i] > list->data[i + 1])
{
int t = list->data[i];
list->data[i] = list->data[i + 1];
list->data[i + 1] = t;
}
}
}
int ADD = 5;
Status isfull(Sqlist *list)
//排序 从小到大
{
if(list->length == MAXSIZE)
{
list->data = realloc(list->data, (ADD + MAXSIZE)*sizeof(ElementType));
if(NULL == list->data)
{
return -1;
}
MAXSIZE += ADD;
}
}
Status delete(Sqlist *list, int index)
{
int i;
if(index >= Lengthlist(*list))
{
return ERROR;
}
for(i = index; i < Lengthlist(*list)-1; i++)
{
list->data[i] = list->data[i + 1];
}
list->length--;
}
Status insert_index(Sqlist *list, int index, ElementType x)
{
int i;
if(index >= Lengthlist(*list))
{
return ERROR;
}
for(i = Lengthlist(*list) - 1; i >= index; i--)
{
list->data[i + 1] = list->data[i];
}
list->data[index] = x;
list->length++;
return OK;
}
Status clearlist(Sqlist *list)
{
int i;
memset(list->data, 0, Lengthlist(*list)*sizeof(ElementType));
list->length = 0;
free(list->data);
list->data = NULL;
MAXSIZE = 20;
return OK;
}
Status querylist(Sqlist list, ElementType x)
{
int count = 0;
int i;
for(i = 0; i < Lengthlist(list); i++)
{
if(list.data[i] == x)
{
printf("%d\n", i);
count++;
}
}
printf("together = %d,daying = %d", count, x);
}