顺序线性表

#include <stdio.h>  

#include "SqList.h"

int main(void)
{
int num = 0;
char e;
SqList L;

InitList(&L);

//插入元素
InsElem(&L, 'a', 1);
InsElem(&L, 'b', 2);
InsElem(&L, 'c', 3);
InsElem(&L, 'd', 4);
InsElem(&L, 'e', 5);
InsElem(&L, 'f', 6);
InsElem(&L, 'g', 7);
InsElem(&L, 'h', 8);
InsElem(&L, 'i', 9);

printf("线性表:");
DispList(L);
printf("长度:");
printf("%d", GetLength(L));
printf("/n");

num = 3;
GetElem(L, num, &e);
printf("第%d个元素:%c/n",num, e);

e = 'd';
printf("元素%c是第%d个元素/n", e, Locate(L, e));

num = 4;
printf("删除第%d个元素/n", num);
DelElem(&L, num);
printf("线性表:");
DispList(L);
printf("长度:");
printf("%d", GetLength(L));
printf("/n");



return 0;
}


[cpp] view plaincopyprint?
#ifndef SQLIST
#define SQLIST

#define MAX_SIZE 100

typedef struct{
char data[MAX_SIZE];
int length;
}SqList;

extern void InitList(SqList *L); //初始化线性表
extern int GetLength(SqList L); //求线性表的长度
extern int GetElem(SqList L, int num, char *e); //求线性表中第i个元素
extern int Locate(SqList L, char x); //按值查找元素
extern int InsElem(SqList *L, char x, int num); //插入元素
extern int DelElem(SqList *L, int num); //删除元素
extern void DispList(SqList L); //输出元素值



#endif

[cpp] view plaincopyprint?
#include "SqList.h"

/*********************************************************
** 函数名:void InitList(SqList *L)
** 功能: 初始化线性表
** 描述: 长度初始化为0
** 作者: 庞辉
*********************************************************
*/

void InitList(SqList *L)
{
L->length = 0;
}

/*********************************************************
** 函数名:int GetLength(SqList L)
** 功能: 求线性表的长度
** 描述: 无
** 作者: 庞辉
*********************************************************
*/

int GetLength(SqList L)
{
return L.length;
}


/*********************************************************
** 函数名:int GetElem(SqList L, int i, char *e)
** 功能: 求线性表中第i个元素
** 描述: 错误则返回-1, 若找到则返回0,该元素值存入参数e中
** 作者: 庞辉
*********************************************************
*/

int GetElem(SqList L, int num, char *e)
{
if(num < 1 || num > L.length)
{
return -1;
}
else
{
*e = L.data[num - 1];
return 0;
}
}

/*********************************************************
** 函数名:int Locate(SqList L, char x)
** 功能: 按值查找元素
** 描述: 错误则返回-1, 若找到则返回位置(从1开始计量)
** 作者: 庞辉
*********************************************************
*/

int Locate(SqList L, char x)
{
int i = 0;

for(i = 0; i < L.length; i++)
{
if(L.data[i] == x)
{
return i + 1;
}
}

return -1;
}

/*********************************************************
** 函数名:int InsElem(SqList *L, char x, int num)
** 功能: 在某位置插入元素
** 描述: 错误则返回-1, 若成功则返回0
** 作者: 庞辉
*********************************************************
*/

int InsElem(SqList *L, char x, int num)
{
int i = 0;

if((num < 1 || num > L->length + 1) || (L->length == MAX_SIZE))
{
return -1;
}
else
{
for(i = L->length - 1; i > num - 2; i--)
{
L->data[i + 1] = L->data[i];
}

L->data[i + 1] = x;

L->length++;

return 0;
}
}

/*********************************************************
** 函数名:int DelElem(SqList *L, int num)
** 功能: 在某位置删除元素
** 描述: 错误则返回-1, 若成功则返回0
** 作者: 庞辉
*********************************************************
*/

int DelElem(SqList *L, int num)
{
int i = 0;

if(num < 1 || num > L->length)
{
return -1;
}
else
{
for(i = num; i < L->length; i++)
{
L->data[i - 1] = L->data[i];
}

L->length--;
}
}

/*********************************************************
** 函数名:void DispList(SqList L)
** 功能: 输出元素值
** 描述: 无
** 作者: 庞辉
*********************************************************
*/

void DispList(SqList L)
{
int i = 0;

for(i = 0; i < L.length; i++)
{
printf("%c ", L.data[i]);
}

printf("/n");
}



原文地址:https://www.cnblogs.com/pang123hui/p/2309944.html