欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

顺序表的基本操作

程序员文章站 2024-03-20 14:20:40
...

1:定义结构体

#include<iostream>
using namespace std;
#define Maxsize 15

typedef int DataType;//将DataType的类型指定为int
typedef struct SeqList {    //定义结构体SeqList
 DataType data[Maxsize];
 int SeqLength;
};

2:函数原型

SeqList *Init_SeqList();//初始化
void Display_SeqList(SeqList *L);//输出
void Define_SeqList(SeqList *L, int n);//输入
int Insert_SeqList(SeqList *L, int i, int x);//在i位置插入x
int Delete_SeqList(SeqList *L, int i);//删除i位置的元素
void Find_SeqList(SeqList *L, int x);//查找元素x所在的位置

3:初始化顺序表

SeqList *Init_SeqList()
{
 SeqList *L;   //新建一个顺序表对象
 L = new SeqList;
 L->SeqLength = 0;//长度为0,即一开始没有任何元素
 return L;
}

4:给顺序表赋值

void Define_SeqList(SeqList *L, int n)
{
 cout << "输入数" << endl;
 for (int i = 0; i < n; i++)
 {
  cin >> L->data[i];
  L->SeqLength++;
 }
}

5:输出顺序表的元素

void Display_SeqList(SeqList *L)
{
 for (int i = 0; i < L->SeqLength; i++)
  cout << L->data[i] << " ";
 cout << endl;
}

6:插入元素

int Insert_SeqList(SeqList *L, int i, int x)
{
 if (i<0 || i>L->SeqLength - 1)   //判断要插入的位置合不合理
  return 0;
 if (L->SeqLength == Maxsize)   //判断顺序表还有没有空位
  return -1;
 for (int j = L->SeqLength-1; j >= i; j--) //将i位置后的元素全部后移
 {
  L->data[j + 1] = L->data[j];
 }
 L->data[i] = x;
 L->SeqLength++;
 Display_SeqList(L);
 return 1;
}

7:删除元素

int Delete_SeqList(SeqList *L, int i)
{
 if (i<0 || i>L->SeqLength - 1)   //判断位置合不合理
  return 0;
  for (int j = i; j < L->SeqLength-1; j++)
 {
  L->data[j] = L->data[j + 1];
 }
 L->SeqLength--;
 Display_SeqList(L);
 return 1;
}

8:查找元素对应的位置

void Find_SeqList(SeqList *L, int x)
{
 int k = 0;
 for (int i = 0; i < L->SeqLength; i++)
 {
  if (L->data[i] == x)
  {
   cout << i << endl;
   k++;
  }
 }
 if (k == 0)cout << "未找到相同的数" << endl;
}

9:主函数的实现

int main()
{
 SeqList *L;
 L = Init_SeqList();
 Define_SeqList(L, 6);
 Display_SeqList(L);
 Insert_SeqList(L, 3, 520);
 Delete_SeqList(L, 4);
 Find_SeqList(L, 520);
 Find_SeqList(L, 369);
 return 0;
}