#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");
}