首页 > 其他 > 详细

线性表的顺序表现形式

时间:2020-10-19 21:41:09      阅读:34      评论:0      收藏:0      [点我收藏+]
#include<iostream>
using namespace std;
typedef struct {
 int* a;
 int length;
}Sqlist;
// 创建线性表
void InitList(Sqlist& L) {
 L.a = new int[20];
 if (!L.a)
  exit(0);
 L.length = 0;
 cout << "线性表已经创立。" << endl;
}
// 销毁线性表
void DestroyList(Sqlist& L) {
 if (L.a)
  delete L.a;
 cout << "线性表已经被销毁了。" << endl;
}
// 清空线性表
void ClearList(Sqlist& L) {
 L.length = 0;
 cout << "线性表已经被清空了,可以用来做其他的事情了。" << endl;
}
// 求线性表的长度
int GetList(Sqlist& L) {
 return L.length;
}
// 判断线性表是否为空
void IsEmpty(Sqlist& L) {
 if (L.length == 0)
  cout << "线性表是空表。" << endl;
 else
  cout << "线性表不是空表。" << endl;
}
// 取值方法
int GetValue(Sqlist L, int i, int& e) {
 if (i<1 || i>L.length) {
  cout << "i的取值范围不合法。" << endl;
  return 0;
 }
 else {
  e = L.a[i];
 }
 return e;
}
// 按值查找
int ChaZhao(Sqlist L, int e) {
 int i = 0;
 for (i; i < L.length; i++) {
  if (L.a[i] == e) {
   return i + 1;
   break;
  }
 }
 return 0;
}
// 顺序表的插入
void ChaRu(Sqlist& L, int e, int i) {
 if (i<0 || i>L.length + 1) {
  cout << "位置" << i << "不合法。" << endl;
  exit(0);
 }
 if (L.length == 20) {
  cout << "线性表已经满了。" << endl;
  exit(0);
 }
 int j = L.length;
 for (j;j >= i; j--) {
  L.a[j] = L.a[j- 1];
 }
 L.a[i - 1] = e; L.length++;
}
// 顺序表的删除
void ShanChu(Sqlist &L, int i) {
 if (i<0 || i>L.length) {
  cout << "位置" << i << "不合法。" << endl;
 }
 int j = L.length;
 for (i; i<=j-1; i++) {
  L.a[i-1] = L.a[i ];
 }
 L.length--;
}
int main() {
 Sqlist L;
 InitList(L);
 cout << GetList(L) << endl;
 IsEmpty(L);
 L.a[0] = 0;
 L.a[1] = 1;
 L.a[2] = 2;
 L.a[3] = 3;
 L.a[4] = 4;
 L.a[5] = 5;
 L.a[6] = 6;
 L.a[7] = 7;
 L.length = 8;
 cout << ChaZhao(L, 7) << endl;
 ChaRu(L, 8, 9);
 cout << GetList(L) << endl;
 cout << L.a[8] << endl;
 ShanChu(L, 2);
 cout << GetList(L) << endl;
 cout << L.a[1] << endl;
 return 0;
}

线性表的顺序表现形式

原文:https://www.cnblogs.com/wangmoumou/p/13841888.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!