前言
线性表是我们平时经常用的一种数据结构,他最典型的就是数组,他的优势在于他的查找方便,但是对于增加和删除就显得不那么尽人意了
线性表的数据结构
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;
}
本文深入探讨了线性表这一基本数据结构的实现与操作,包括插入、修改、遍历、删除及释放等核心功能。通过具体代码示例,详细解析了如何在数组中进行这些操作,以及每种操作的实现细节。
5170

被折叠的 条评论
为什么被折叠?



