顺序表的基本运算
线性表的定义
#include <stdio.h>
#define MAXSIZE 100
typedef char ElemType;
typedef struct
{
ElemType data[MAXSIZE];
int length;
} SqList;
初始化线性表
void InitList(SqList &sq)
{
sq.length = 0;
}
求线性表长度
int GetLength(SqList sq)
{
return sq.length;
}
求线性表中第i个元素
int GetElem(SqList sq, int i, ElemType &e)
{
if (i < 1 || i > sq.length)
return 0;
else
{
e = sq.data[i - 1];
return 1;
}
}
按值查找
int Locate(SqList sq, ElemType x)
{
int i = 0;
while (sq.data[i] != x)
i++;
if (i > sq.length)
return (0);
else
return (i + 1);
}
插入元素
int InsElem(SqList &sq, ElemType x, int i)
{
int j;
if (i < 1 || i > sq.length + 1)
return 0;
for (j = sq.length; j > i; j--)
sq.data[j] = sq.data[j - 1];
sq.data[i - 1] = x;
sq.length++;
return 1;
}
删除元素
int DelElem(SqList &sq, int i)
{
int j;
if (i < 1 || i > sq.length)
return 0;
for (j = i; j < sq.length; j++)
sq.data[j - 1] = sq.data[j];
sq.length--;
return 1;
}
输出线性表
void DispList(SqList sq)
{
int i;
for (i = 1; i <= sq.length; i++)
printf("%c ", sq.data[i - 1]);
printf("\n");
}
main
void main()
{
int i;
ElemType e;
SqList sq;
InitList(sq);
InsElem(sq, 'a', 1);
InsElem(sq, 'c', 2);
InsElem(sq, 'a', 3);
InsElem(sq, 'e', 4);
InsElem(sq, 'd', 5);
InsElem(sq, 'b', 6);
printf("线性表:");
DispList(sq);
printf("长度:%d\n", GetLength(sq));
i = 3;
GetElem(sq, i, e);
printf("第%d个元素:%c\n", i, e);
e = 'a';
printf("元素%c是第%d个元素\n", e, Locate(sq, e));
i = 4;
printf("删除第%d个元素\n", i);
DelElem(sq, i);
printf("线性表:");
DispList(sq);
}