main
#include <stdio.h>
#include <stdlib.h>
#include "sqlist_l.h"
int main()
{
printf("%d\n",__LINE__);
int err;
sqlist *list = NULL;
sqlist *list1 = NULL;
datatype arr[6] = {12,12,3,4,7,8};
datatype arr1[6] = {2,3,55,7,9,4};
// list = sqlist_creat();
sqlist_creat1(&list);
sqlist_creat1(&list1);
printf("%d\n",__LINE__);
if(list == NULL)
{
printf("list:careatERR:malloc error\n");
}
if(list1 == NULL)
{
printf("list1:careatERR:malloc error\n");
}
for(int i = 0; i < sizeof(arr)/sizeof(*arr);i++)
{
err = sqlist_insert(list,0,&arr[i]);
if(err!= 0 )
{
if(err == -1)
printf("errorarrFULL");
else if(err == -2)
printf("instererr");
else
printf("othererr");
}
}
//---------------------
for(int i = 0; i < sizeof(arr1)/sizeof(*arr1);i++)
{
err = sqlist_insert(list1,0,&arr1[i]);
if(err!= 0 )
{
if(err == -1)
printf("errorarrFULL");
else if(err == -2)
printf("instererr");
else
printf("othererr");
}
}
// sqlist_delete(list,0);
sqlist_display(list);
sqlist_display(list1);
sqlist_union(list,list1);
sqlist_display(list);
int da = sqlist_find(list,&arr[2]);
printf("%d\n",da);
return 0;
}
sqlist_l.h
#ifndef __SQLISTD__
#define __SQLISTD__
#include <stdio.h>
#include "sqlist_l.h"
#include <stdlib.h>
//线性表的顺序存储
#define DATASIZE 1014
typedef int datatype;
typedef struct node_st
{
datatype data[DATASIZE];
int list;
}sqlist;
sqlist *sqlist_creat();
void sqlist_creat1(sqlist **ptr);
void sqlist_display(sqlist *me);
int sqlist_insert(sqlist *me,int i,datatype *data);
int sqlist_delete(sqlist *me,int i);
int sqlist_destory(sqlist *me);
int sqlist_find(sqlist *me,datatype *data);
int sqlist_isempty(sqlist *me);
int sqlist_setempty(sqlist *me);
int sqlist_getnum(sqlist *me);
int sqlist_union(sqlist *list1,sqlist *list2);
#endif
sqlist_l.c
#include <stdio.h>
#include "sqlist_l.h"
sqlist *sqlist_creat()
{
sqlist *me;
me = malloc(sizeof(*me));
if(me == NULL)
return NULL;
me->list = -1;
return me;
}
void sqlist_display(sqlist *me)
{
if(me->list == -1)
return ;
for(int i = 0;i <= me->list;i++)
{
printf(" %d ",me->data[i]);
}
printf("\n");
return;
}
void sqlist_creat1(sqlist **ptr)
{
*ptr = malloc(sizeof(**ptr));
if(*ptr == NULL)
return ;
(*ptr)->list = -1;
return;
}
int sqlist_insert(sqlist *me,int i,datatype *data)
{
if(me->list == DATASIZE - 1)
return -1;
if(i < 0 || i > me->list + 1)
return -2;
for(int j = me->list;i <= j;j--) //有错?
{
me->data[j+1] = me->data[j];
}
me->data[i] = *data;
me->list++;
return 0;
}
int sqlist_delete(sqlist *me,int i)
{
if(i < 0 || i > me->list)
return -1;
for(int j = i + 1;j <= me->list;j++)
{
me->data[j - 1] = me->data[j];
}
me->list --;
return 0;
}
int sqlist_destory(sqlist *me)
{
free(me);
return 0;
}
int sqlist_find(sqlist *me,datatype *data)
{
if(sqlist_isempty(me) == 0)
return -1;
for(int i = 0;i <= me->list;i++)
{
if(me->data[i] == *data)
{
return i;
}
}
return -1;
}
int sqlist_isempty(sqlist *me)
{
if(me->list == -1)
{
return 0;
}
return -1;
}
int sqlist_setempty(sqlist *me)
{
me->list = -1;
return 0;
}
int sqlist_getnum(sqlist *me)
{
return (me->list+1);
}
int sqlist_union(sqlist *list1,sqlist *list2)
{
for(int i = 0;i <= list2->list;i++)
{
if((sqlist_find(list1,&list2->data[i])) < 0)
{
sqlist_insert(list1,0,&list2->data[i]);
}
}
return 0;
}