线性表的顺序存储结构线性表。
首先声明一个Sqlist的结构体
#define MAXSIZE 50;
typedef struct{
ElemType data[MAXSIZE];
int length;
}Sqlist;
注意事项:在顺序表中,有逻辑地址和物理地址,逻辑地址是从1开始的,而物理地址是从0开始的,所以应该注意给的地址是逻辑地址和物理地址。
1、建立单链表
//建立顺序表
void CreatList(Sqlist* L, ElemType a[], int n)//L为建立的顺序表,a为数组中的元素,n为数组的长度
{
int i = 0, k = 0;//k表示L中的元素个数,初始值为0
L = (Sqlist*)malloc(sizeof(Sqlist));//分配存放线性表的空间
while (i < n)//i扫描数组a的元素
{
L->data[k] = a[i];//将元素a[i]存放到L中
k++;
i++;
}
L->length = k;//设置L的长度
}
2、按照元素的值查找
//按照元素对顺序表进行查找
int LocateElem(Sqlist* L, int e)
{
int i = 0;
while (i < L->length || L->data[i] != e)//对链表进行遍历
{
i++;
}
if (i > L->length)/判断元素是不是在单链表中
return false;
else
return i++;
}
3、对单链表中的元素进行删除
//对单链表中的元素进行删除
bool ListDelet(Sqlist* L, int i; Elemtype e)
{
int j;
if (i<1 || i>L->length)//判断参数是不是正确的
return false;
i--;//将顺序表逻辑序号转化为物理序号
e = L->data[i];
for (j = i; j < L->length; j++)//将data[i]之后的元素前移一个位置
{
L->data[i] = L->data[i + 1];
}
L->length--;//将L长度减一
ret