数据结构 线性表操作

#include<iostream>
using namespace std;
#define MaxSize 10 //定义最大长度
typedef int ElemType;
//静态分配
//typedef struct {
//    ElemType data[MaxSize]; //用静态的“数组”存放数据元素
//    int length; //顺序表的当前长度
//}SqList;
//动态分配
typedef  struct {
    ElemType *data;
    int maxsize;
    int length;
}SeqList;
//void InitList(SqList &L)//初始化顺序表
//{
//    for(int i=0;i<MaxSize;i++)
//    {
//        L.data[i]=0;//将所有数据元素设置为默认初始值
//        L.length=0;//顺序表的初始长度为0
//    }
//}
void InitSeqlist(SeqList &L)
{
    L.data=new int[MaxSize];
    L.data=(int *) malloc(MaxSize*sizeof(int));
    L.length=0;
    L.maxsize=MaxSize;
}
void increaseList(SeqList &L,int len)
{
    int *p=L.data;
    L.data=new int[MaxSize+len];
    L.data=(int*) malloc((MaxSize+len)*sizeof (int));
    for(int i=0;i<L.length;i++)
    {
        L.data[i]=p[i];
    }
    L.maxsize=MaxSize+len;
    delete(p);
}
void printList(SeqList &L)
{
    for(int i=0;i<L.length;i++)
    {
        cout<<L.data[i]<<" ";
    }
}
void insertList(SeqList &L,int i,int e)
{
    if(i<0||i>L.length+1)
    {
        cout<<"位置不合法";
    }
    else if(i>=MaxSize)
    {
        cout<<"顺序表已满";
    }
    else{
        for(int j=L.length;j>=i;j--)
        {
            L.data[j]=L.data[j-1];
        }
        L.data[i-1]=e;
        L.length++;
    }
}
bool deleteList(SeqList &L,int i,int &e)
{
   if(i<0||i>L.length)
   {
       return false;
   }
    e=L.data[i-1];
   for(int j=i;j<L.length;j++)
   {
       L.data[j-1]=L.data[j];
   }
   L.length--;
    return true;
}
int getElem(SeqList L,int i)
{
    return L.data[i-1];
}
int locateElem(SeqList L,int e)
{
    for(int i=0;i<L.length;i++)
    {
        if(L.data[i]==e)
        {
            return i+1;//找到第i个元素
        }
    }
}
int main()
{
    SeqList L;
    InitSeqlist(L);
    increaseList(L,4);
    int length=5;
    L.length=length;
    int a[5]={3,6,1,2,7};
    for(int i=0;i<L.maxsize;i++)
    {
        L.data[i]=a[i];
    }
 //按位查找   cout<<getElem(L,2);
  //按值查找 cout<< locateElem(L,6);
//  插入  insertList(L,2,5);
//  删除  int e;
//    if(deleteList(L,8,e))
//    {
//        cout<<"删除成功,删除的元素为"<<e<<" ";
//    } else{
//        cout<<"删除位置不合法";
//    }
//    SqList L;//声明一个顺序表
//    InitList(L);//初始化顺序表
    printList(L);
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值