顺序表的操作

目录

1.结构体设置

2. 顺序表初始化

3.插入一个数据到顺序表指定的位置

4.遍历函数

5.删除某个位置的数据

6.查询某个数据的位置

7.修改某个数据为新的数据

8.插入某个数据到顺序表,保持顺序表递增有序

9.删除某个数据,保持顺序表递增有序


1.结构体设置

typedef struct Seq
{
	int *data;
	int length;
	int size;
}seq;

2. 顺序表初始化

// 顺序表初始化
seq *seq_init(void)
{
    seq *p=(seq *)malloc(sizeof(seq));
    p->data=(int *)malloc(sizeof(int)*5);
    p->length=0;
    p->size=5;
    
    return p;
}

3.插入一个数据到顺序表指定的位置

// 插入一个数据到顺序表指定的位置
void seq_insert(seq *p,int elem,int add)  // 1 2 3 4     length=4  elem=10  add=2
{
    if(add<1 || add>p->length+1)
    {
        return;
    }
    if(p->length==p->size)
    {
        p->data=(int *)realloc(p->data,sizeof(int)*(p->size+1));
        p->size++;
    }
    
    int i;
    for(i=p->length;i>=add;i--)
    {
        p->data[i]=p->data[i-1];
    }
    p->data[add-1]=elem;
    p->length++;
    
}

4.遍历函数

// 遍历函数
void display(seq *p)
{
    int i;
    for(i=0;i<p->length;i++)
    {
        printf("%d >> ",p->data[i]);
    }
    printf("\n");
}

5.删除某个位置的数据

//删除某个位置的数据
int seq_del(seq *p,int add)   // 1 2 3 4  add=2
{
    if(add<1 || add>p->length)
    {
        return -1;
    }
    
    int i;
    for(i=add;i<p->length;i++)
    {
        p->data[i-1]=p->data[i];
    }
    p->length--;
    return 0;
}

6.查询某个数据的位置

// 查询某个数据的位置
int seq_search(seq *p,int elem)
{
    int i;
    for(i=0;i<p->length;i++)
    {
        if(p->data[i]==elem)
        {
            return i+1;
        }
    }
    return -1;
}

7.修改某个数据为新的数据

// 修改某个数据为新的数据
void seq_change(seq *p,int elem,int newelem)
{
    int add=seq_search(p,elem);
    p->data[add-1]=newelem;
    
}

8.插入某个数据到顺序表,保持顺序表递增有序

// 插入某个数据到顺序表,保持顺序表递增有序
void seq_test_insert(seq *p,int elem)  //2 4 6 8    elem=5
{
    int i;
    for(i=0;i<p->length;i++)
    {
        if(elem<p->data[i])
        {
            break;
        }
        
    }
    
    seq_insert(p,elem,i+1);
}

9.删除某个数据,保持顺序表递增有序

// 删除某个数据,保持顺序表递增有序
void seq_test_del(seq *p,int elem)  //2 4 5 8    6  
{
    int i;
    for(i=0;i<p->length;i++)
    {
        if(elem==p->data[i])
        {
            break;
        }
        
    }
    seq_del(p,i+1);
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
顺序是一种常见的数据结构,它可以用数组实现。下面是一些常见的顺序操作代码: 1. 初始化顺序: ```c++ #define MAX_SIZE 100 // 定义顺序的最大长度 typedef struct { int data[MAX_SIZE]; // 用数组存储数据元素 int length; // 当前顺序的长度 } SeqList; void InitList(SeqList &L) { L.length = 0; // 初始化长度为0 } ``` 2. 插入元素到顺序中: ```c++ bool Insert(SeqList &L, int pos, int elem) { if (pos < 1 || pos > L.length + 1) { return false; // 插入位置不合法 } if (L.length >= MAX_SIZE) { return false; // 顺序已满,无法插入 } for (int i = L.length; i >= pos; i--) { L.data[i] = L.data[i - 1]; // 将插入位置及之后的元素后移一位 } L.data[pos - 1] = elem; // 在插入位置插入新元素 L.length++; // 长度加1 return true; } ``` 3. 删除顺序中指定位置的元素: ```c++ bool Delete(SeqList &L, int pos) { if (pos < 1 || pos > L.length) { return false; // 删除位置不合法 } for (int i = pos; i < L.length; i++) { L.data[i - 1] = L.data[i]; // 将删除位置之后的元素前移一位 } L.length--; // 长度减1 return true; } ``` 4. 查找顺序中指定元素的位置: ```c++ int Find(SeqList L, int elem) { for (int i = 0; i < L.length; i++) { if (L.data[i] == elem) { return i + 1; // 返回元素在顺序中的位置 } } return -1; // 未找到元素 } ``` 5. 获取顺序中指定位置的元素: ```c++ bool GetElem(SeqList L, int pos, int &elem) { if (pos < 1 || pos > L.length) { return false; // 获取位置不合法 } elem = L.data[pos - 1]; // 获取指定位置的元素 return true; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值