前言
线性表是我们平时经常用的一种数据结构,他最典型的就是数组,他的优势在于他的查找方便,但是对于增加和删除就显得不那么尽人意了
线性表的数据结构
define SIZE 100
typedef struct _list_
{
datatype value[SIZE];
int n;
}sqlist;
线性表的插入
int sqlist_into (sqlist *l,int num,datatype data) //插入
{
if (wall(l)==-1)
return -1;
if ( num > SIZE+1)
return -2;
if (l ->n > (SIZE-1))
return -3;
int a = l ->n;
for (a=l->n;num<=a;a--)
l->value[a+1] =l->value[a]; //通过内存的一个个移动来实现增加
l ->value [num] = data;
l ->n ++;
return 0;
}
线性表的修改
int sqlist_change(sqlist *l,int num,datatype data) //修改
{
if (wall(l)==-1)
return -1;
if (num <0 || num > SIZE+1)
return -2;
if (l ->n > (SIZE-1))
return -3;
l ->value[num-1] = data;
return 0;
}
线性表的遍历
int sqlist_show (sqlist *l) // 遍历
{
if (NULL ==l)
return -1;
for (int i=0;i<l->n;i++)
printf ("%d ",l->value[i]);
printf ("\n");
return 0;
}
线性表的删除
int sqlist_delete(sqlist *l,int num) //删除
{
if (wall(l)==-1)
return -1;
if (num <0 || num > SIZE+1)
return -2;
if (l ->n > (SIZE-1))
return -3;
int c =num,i=0;
for (c=num,i=0;i<=l->n+1-num;i++,c++)
l->value[c] =l->value[c+1];
l->n --;
}
线性表的释放
int sqlist_free(sqlist *l) // 释放
{
if (wall(l)==-1)
return -1;
free (l);
return 0;
}