20003.数据结构C++ 顺序表

简介: 20003.数据结构C++ 顺序表
#include<iostream>
#define MaxSize 20
typedef int ElemType;
typedef struct {
  ElemType *elem;
  int length;
}SqList;
bool InitList(SqList& L) {
  /*
    初始化顺序表,分配空间。
  */
  L.elem = new int [MaxSize];
  if (!L.elem)
    return false;
  L.length = 0;
  return true;
}
bool CreateList(SqList& L) {
  /*
    插入数据构建顺序表
  */
  int x = 0, i = 0;
  while (x != -1){
    if (L.length == MaxSize) {
      std::cout  << "顺序表已经满了" << std::endl;
      return false;
    }
    std::cout << "请输入插入的元素" << std::endl;
    std::cin >> x;
    L.elem[i++] = x;
    L.length ++;
  }
  return true;
}
bool PrintList(SqList L) {
  /*
    打印顺序表中的内容。
  */
  if (L.length == 0)
    return false;
  for (int i = 0; i < L.length; i++) {
    std::cout << L.elem[i] << std::endl;
  }
  return true;
}
bool GetElem(SqList L, int i, int& e) {
  // 从列表中取第i个值,并且返回到e中
  if (i<1 || i>L.length) {
    return false;
  }
  e = L.elem[i - 1];
  return true;
}
int LocateElem(SqList L, int e) {
  /*
    输入需要查找的元素,返回该元素所在的索引值。
  */
  if (!L.elem)
    return false;
  for (int i = 1; i < L.length; i++)
    if (L.elem[i] == e)
      return i + 1;
  return -1;
}
bool ListInsert_Sq(SqList& L, int i, int e) {
  /*
    向顺序表中插入一个值。
  */
  if (L.length == MaxSize)
    return false;
  for (int j = L.length; j > i; j--)
    L.elem[j] = L.elem[j - 1];
  L.elem[i] = e;
  L.length++;
  return true;
}
bool ListDelete_Sq(SqList& L, int i, int& e) {
  /*
    从顺序表中删除一个值。
  */
  if (i<1 || i >L.length)
    return false;
  e = L.elem[i];
  for (int j = i; j < L.length; j++)
    L.elem[j] = L.elem[j + 1];
  L.length--;
  return true;
}
int main() {
  SqList L;
  // 初始化顺序表
  InitList(L);
  // 创建顺序表
  CreateList(L);
  // 打印顺序表
  PrintList(L);
  // 从表中取数
  int number;
  int e;
  std::cout << "输入您要查找的序号" << std::endl;
  std::cin >> number;
  GetElem(L, number, e);
  std::cout << e << std::endl;
  // 从顺序表中查找
  int index;
  int FindNumber;
  std::cout << "输入要查找的元素" << std::endl;
  std::cin >> FindNumber;
  index = LocateElem(L, FindNumber);
  if (index == -1)
    std::cout << "该顺序表中没有改元素" << std::endl;
  std::cout << index << std::endl;
  // 从顺序表中插入元素
  int InsertIndex;
  int InsertElem;
  std::cout << "请输入您要插入的元素的位置" << std::endl;
  std::cin >> InsertIndex;
  std::cout << "请输入您要出入的元素" << std::endl;
  std::cin >> InsertElem;
  ListInsert_Sq(L, InsertIndex, InsertElem);
  PrintList(L);
  // 从顺序表中删除一个元素
  int DeleteIndex;
  int DeleteElem;
  std::cout << "请输入您要删除元素的索引" << std::endl;
  std::cin >> DeleteIndex;
  DeleteElem = ListDelete_Sq(L, DeleteIndex, DeleteElem);
  std::cout << "删除的元素是" << DeleteElem << std::endl;
  return true;
}
目录
相关文章
|
1月前
|
存储 C++ Python
【数据结构】哈希表—C/C++实现
【数据结构】哈希表—C/C++实现
31 0
|
2月前
|
存储 算法 C语言
数据结构 | 顺序表专题
数据结构 | 顺序表专题
|
2月前
|
存储 关系型数据库 数据库
【数据结构】—红黑树(C++实现)
【数据结构】—红黑树(C++实现)
|
28天前
|
存储 算法
【数据结构与算法】3.顺序表
【数据结构与算法】3.顺序表
|
1月前
数据结构 模拟实现ArrayList顺序表
数据结构 模拟实现ArrayList顺序表
23 0
|
1月前
|
算法 测试技术 C++
【数据结构】模式匹配之KMP算法与Bug日志—C/C++实现
【数据结构】模式匹配之KMP算法与Bug日志—C/C++实现
30 0
|
1月前
|
存储 算法 C++
【数据结构】链表—C/C++实现
【数据结构】链表—C/C++实现
29 1
|
1月前
|
搜索推荐 C语言 C++
【数据结构】经典排序算法—C/C++实现
【数据结构】经典排序算法—C/C++实现
14 1
|
2月前
|
存储 缓存 索引
数据结构——顺序表的概念和基本操作(超全超详细)
数据结构——顺序表的概念和基本操作(超全超详细)
|
2月前
|
算法 定位技术 C++
数据结构实训(大作业)c++模拟北斗卫星导航系统简单的迪杰斯特拉算法
数据结构实训(大作业)c++模拟北斗卫星导航系统简单的迪杰斯特拉算法
18 0