编程菜鸟的日记-初学尝试编程-顺序表的基本操作

#include <iostream>
using namespace std;
typedef int ElemType;
#define Maxsize 100
//顺序表的两个要素:data和length

typedef struct
{
 ElemType data[Maxsize];
 int length;
}SqList;
//1.创建线性表
void CreateList(SqList *&L,ElemType a[], int n)//注意引用的使用
{
 if(n>Maxsize)
  throw"上溢";
 else
 {
  for(int i=0;i<=n-1;i++)
  {
   cin>>a[i];
   L->data[i]=a[i];
  }
  L->length=n;
 }
}
//2.初始化线性表
void InitList(SqList *&L)
{
 L=(SqList *)malloc(sizeof(SqList));//分配存放线性表的空间
 L->length=0;
}
//3.销毁线性表
void Destory(SqList *&L)
{
 free(L);
}
//4.判断表是否为空,空返回1,否则返回0
int ListEmpty(SqList *&L)
{
 return(L->length==0);
}
//5.判断表是否满
int ListFull(SqList *&L)
{
 if(L->length==Maxsize)
  return 1;
 else
  return 0;
}
//6.将e插入表中位置i
void Insert(SqList *&L,int i,ElemType e)
{
 if(L->length>=Maxsize)
  throw"上溢";
 if(i<1||i>L->length+1)
  throw"插入位置非法";
 else
 {
  for(int j=L->length-1;j>=i-1;j--)
  {
   L->data[j+1]=L->data[j];
  }
  L->data[i-1]=e;
  L->length++;
 }
}
//7.删除表中位置i的元素
ElemType Delete(SqList *L,int i)
{
 if(L->length==0)
  throw"下溢";
 if(i<1||i>L->length)
  throw"删除位置非法";
 else
 {
  ElemType x=L->data[i-1];
  for(int j=i-1;j<=L->length-1;j++)
  {
   L->data[j]=L->data[j+1];
  }
  L->length--;
  return x;
 }
}
//8.获取位置i的元素
ElemType GetElem(SqList *&L,int i)
{
 if(i<1||i>L->length)
  throw"获取元素位置异常";
 else
 {
  ElemType x=L->data[i-1];
  return x;
 }
}
//9.查找第一个与e相等的元素位置
int LocateElem(SqList *&L,ElemType e)
{
 for(int i=0;i<=L->length-1;i++)
 {
  if(L->data[i]==e)
   return i+1;
 }
 return 0;
}
//10.求表长
int ListLength(SqList *&L)
{
 return L->length;
}
//11.输出表全部元素
void DispList(SqList *&L)
{
 if(L->length)
 {
  for(int i=0;i<=L->length-1;i++)
   cout<<i+1<<":"<<L->data[i]<<endl;
 }
}
void main()
{
 SqList *L;
 //L=(SqList *)malloc(sizeof(SqList));
    InitList(L);//初始化
 ElemType a[100];
 ElemType e;
 int n,i;
 cin>>n;
 CreateList(L,a,n);
    ListEmpty(L);
 ListFull(L);
 cout<<"请输入插入位置:";
 cin>>i;
 cout<<endl;
 cout<<"请输入要插入位置"<<i<<"的元素值:";
 cin>>e;
    Insert(L,i,e);
    DispList(L);
 Delete(L,i);
    DispList(L);
    e=GetElem(L,i);
    i=LocateElem(L,e);
 cout<<i<<endl;
 ListLength(L);
    DispList(L);
 Destory(L);
 system("pause");
}

原文地址:https://www.cnblogs.com/lynnycy/p/3405754.html