目录
线性表的顺序存储结构
线性表插入
思路:
(1)判断线性表是否已经满员,以及插入的位置是否在线性表范围内。
(2)从线性表最后一位开始向后移位,知道要插入的位置。
(3)将此位置赋值为要插入的元素。
#include <stdio.h>
#include <string.h>
typedef enum _BOOL
{
efalse = 0,
etrue = 1
}bool;
#define MAX_SIZE (10)
bool ListInsert(char *p, int i, char e)
{
int k;
int Length =strlen(p);
if (p == NULL) //指针是否为空
{
return efalse;
}
if (Length == MAX_SIZE) //线性表是否已满
{
return efalse;
}
if (i < 0 || i > Length) //插入位置是否在范围内
{
return efalse;
}
for (k = Length; k > i; k--) //向后移位
{
*(p+k) = *(p+k-1);
}
*(p+k) = e;
return etrue;
}
int main(void)
{
char a[MAX_SIZE] = "abcd";
char *str = a;
if (ListInsert(str, 2, 'r'))
{
printf("str: %s", str); // str: abrcd
}
else
{
printf("error");
}
return 0;
}
线性表删除
思路:
(1)判断删除的位置是否在线性表范围内
(2)从删除位后一位开始,向前移位
(3)原本的最后移位赋为’\0’
#include <stdio.h>
#include <string.h>
bool ListDelet(char *p, int i)
{
if (p == NULL)
{
return efalse;
}
int k;
int Length = strlen(p);
if (i < 0 || i > Length - 1)
{
return efalse;
}
for (k =