#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 110
typedef struct student{
int id;
char name[21];
float sco;
} stu_t;
typedef struct sqelist{
stu_t data[N];
int last;
} sq_t;
sq_t* CreateList(void){
sq_t* list;
list = malloc(sizeof(sq_t));
if(list == NULL)
return NULL;
memset(list,0,sizeof(sq_t));
list->last = -1;
return list;
}
int InsertList(sq_t *list,int local,stu_t mydata){
int i;
if(list == NULL)
return -1;
if(list->last == N-1)
return -1;
if(local < 0 || local > list->last + 1)
return -1;
for(i = list->last;i >= local; i--)
list->data[i+1] = list->data[i];
list->data[local] = mydata;
list->last++;
return 0;
}
void DisplayList(sq_t* list){
if(list == NULL)
return;
for(int i = 0;i <= list->last;i++){
printf("%d ",list->data[i].id);
}
putchar(10);
}
int DeleteList(sq_t *list, int local){
if(list == NULL)
return -1;
if(list->last == -1)
return -1;
if(local < 0 || local > list->last + 1)
return -1;
for(int i = local; i < list->last; i++)
list->data[i] = list->data[i+1];
list->last--;
return 0;
}
int ChangeList(sq_t *list, int local,stu_t newdata){
if(list == NULL)
return -1;
if(list->last == -1)
return -1;
if(local < 0 || local > list->last + 1)
return -1;
list->data[local] = newdata;
return 0;
}
int SearchList(sq_t *list,int local,stu_t *mydata ){
if(list == NULL)
return -1;
if(list->last == -1)
return -1;
if(local < 0 || local > list->last + 1)
return -1;
*mydata = list->data[local];
return 0;
}
void DestoryList(sq_t **list){
if(list == NULL)
return;
free(*list); //list里面存储的是sq_t的地址,*list代表访问sq_t的空间
*list = NULL;
}
void Quchong(sq_t *list){
if(list == NULL)
return;
stu_t s;
for(int i = 0;i<list->last;i++)
{
int con = 0;
for(int j = i; j <=list->last;j++)
{
if(memcmp(list->data+i, list->data+j, sizeof(stu_t)) == 0)
{
// if(list->data[i].id == list->data[j].id){
con++;
if(con > 1)
{
DeleteList(list,j);
j--;
}
}
}
}
DisplayList(list);
}
int main(int argc, const char *argv[])
{
stu_t mydata = {0},newdata={0};
sq_t *list;
list = CreateList();
mydata.id = 9;
while(mydata.id){
InsertList(list,0,mydata);
mydata.id--;
}
DisplayList(list);
newdata.id = 4;
ChangeList(list,2,newdata);
newdata.id = 6;
ChangeList(list,4,newdata);
DisplayList(list);
DeleteList(list,9);
DisplayList(list);
Quchong(list);
DestoryList(&list);
printf("%p\n",list);
return 0;
}
分文件编写