顺序表的基本操作

259 阅读1分钟

1.初始化

初始化是指为顺序表分配一段连续的空间,用elem记录这段空间的基地址用new去分配大小为Maxsize的空间,分配成功返回空间的首地址,分配失败返回空指针


 bool InitList(SqList &L)
  { 
    L.elem=new int [Maxsize]  
    if(!L.elem)  
    return False;    
    L.length=0
    else
    return ture
  }

2.创建

1.初始化下标变量i=0,判断表是否已满,如果是则结束;否则执行2
2.输入一个数据元素x
3.将数据x存入顺序表的第i个位置
4.顺序表长度+1
5.知道数据输入完毕

bool CreatList(SqList &L)  
{
   int x,i;  
   cin>>x;  
   while(x!=-1)  //输入-1时结束
   {    
   if(L.length==Maxsize)  
     {  
        cout<<"顺序表已满";
        return False; 
     }
    L.length++;
    cin>>x;
   }
  return ture;
}

3.取值

顺序表是随机存储模式,只要i是合法的就能立即找到

bool GetList(SqList L,int i,int &e) 
{
  if (i<1||i>L.length)
  return False;
  e=L.elem[i-1] 
  return ture
}

4.查找

int LocateList(SqList L,int e) 
{
  for (i=0,i<L.Length;i++)
  {
    if(L.elem[i]==e)
    return i+1;
  }
  return -1
}

5.插入

1.判断插入位置是否合法,可以在第一个位置也可以在L.length+1的位置
2.判断顺序表的存储空间是否已满
3.将L.length值第i个元素依次向后移动一个位置,空出第i个位置
4.将要插入的新元素e放到i的位置
5.表长+1,成功返回ture

bool ListInsert_sq(SqList &L,int i,int e) 
{
  if(i<1||i>L.Length+1)
  return False;
  if(L.Length==maxsize)
  return False;
  for(int j=L.Length-1,j>=i-1,j--)
  {
    L.elem[j+1]=L.elem[j];  
  }
  L.Length++;
  return ture;
}

6.删除

1.判断删除位置是否合法
2.将要删除的元素保存在e中
3.将第i+1至第n个元素详向前移动一个位置
4.表长-1,删除成功返回ture

bool ListDelet_sq(SqList &L,int i,int e) 
    {
       if(i<1||i>L.Length)
       return False;
       e=l.elem[i-1]
       for(int j=i,j<=L.Length-1,j++)
          {
            L.elem[j-1]=L.elem[j];  
          }
        L.Length--;
        return ture;
    }

顺序表的优缺点

1.优点 操作简单,储存密度高可以随机存取 2.缺点
需要预先分配最大空间