C++顺序表实验
Posted 康小庄
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++顺序表实验相关的知识,希望对你有一定的参考价值。
完整代码
#include <iostream>
#include <stdio.h>
#include <malloc.h>
#define MaxSize 50
typedef char ElemType;
typedef struct
ElemType data[MaxSize];
int length;
SqList;
/**
* 初始化顺序表
* @param L 链表
*/
void InitList(SqList *&L)
L = (SqList *) malloc(sizeof(SqList));
L->length = 0;
/**
* 释放顺序表
* @param L 链表
*/
void DestroyList(SqList *L)
free(L);
/**
* 判断顺序表是否为空
* @param L 顺序表
* @return 顺序表是否为空
*/
int ListEmpty(SqList *L)
return (L->length == 0);
/**
* 顺序表的长度
* @param L 顺序表
* @return 顺序表的长度
*/
int ListLength(SqList *L)
return (L->length);
/**
* 打印顺序表
* @param L 顺序表
*/
void DispList(SqList *L)
int i;
if (ListEmpty(L)) return;
for (i = 0; i < L->length; i++)
printf("%c", L->data[i]); //???
printf("\\n");
/**
* 获取顺序表中的指定元素
* @param L 顺序表
* @param i 索引
* @param e 通过给e赋值 找到指定的元素
* @return 返回是否找到
*/
int GetElem(SqList *L, int i, ElemType &e)
if (i < 1 || i > L->length)
return 0;
e = L->data[i]; // 通过给e赋值来获取指定的元素
return 1;
/**
* 定位元素
* @param L 顺序表
* @param e 元素
* @return 是否找到
*/
int LocateElem(SqList *L, ElemType e)
int i = 0;
while (i < L->length && L->data[i] != e) i++;
if (i >= L->length)
return 0;
else
return i + 1;
/**
* 顺序表的插入
* @param L 顺序表
* @param i 索引
* @param e 元素
* @return 是否插入
*/
int ListInsert(SqList *L, int i, ElemType e)
int j;
if (i < 1 || i > L->length + 1)
return 0;
i--; //将顺序表位序转化为elem下标
for (j = L->length; j > i; j--) //将data[i]及后面元素后移一个位置
L->data[j] = L->data[j - 1]; // 元素后移
L->data[i] = e; //新元素赋值
L->length++; //顺序表长度增1
return 1;
/**
* 顺序表的删除
* @param L 顺序表
* @param i 索引
* @param e 元素
* @return 是否删除
*/
int ListDelete(SqList *L, int i, ElemType &e)
int j;
if (i < 1 || i > L->length)
return 0;
i--; //将顺序表位序转化为elem下标
e = L->data[i];
for (j = i; j < L->length - 1; j++)
L->data[j] = L->data[j + 1]; // 元素前移
L->length--;
return 1;
int main()
std::cout << "Hello666, World!" << std::endl;
SqList *L;
ElemType elemType;
printf("(1) 初始化顺序表\\n");
InitList(L);
printf("(2) 依次插入a,b,c,d,e元素\\n");
ListInsert(L, 1, 'a');
ListInsert(L, 2, 'b');
ListInsert(L, 3, 'c');
ListInsert(L, 4, 'd');
ListInsert(L, 5, 'e');
printf("(3)L长度=%d\\n", ListLength(L));
printf("(4)顺序表位%s\\n", (ListEmpty(L) ? "空" : "非空"));
GetElem(L, 3, elemType);
printf("(5)顺序表L的第3个元素=%c\\n", elemType);
printf("(6)元素b的位置=%d\\n", LocateElem(L, 'b'));
printf("(7)在第4个元素上插入f元素\\n");
ListInsert(L, 4, 'f');
printf("输出顺序表L:");
DispList(L);
printf("(8)删除L的第3个元素\\n");
ListDelete(L, 3, elemType);
printf("(9)输出顺序表L:");
DispList(L);
printf("(10) 释放顺序表\\n");
DestroyList(L);
return 0;
运行截图
以上是关于C++顺序表实验的主要内容,如果未能解决你的问题,请参考以下文章
数据结构实验:线性表的顺序表示和链式表示及插入、删除、查找运算
C++数据结构,写一种算法,从顺序表删除第i个元素开始的第k个元素