数据结构初阶 顺序表的补充

简介: 数据结构初阶 顺序表的补充

一. 题目的要求

写出三种链表的接口函数

它们的功能分别是

1 查找数的位置

2 在pos位置插入值

3 在pos位置删除值


二. 实现pos

这个其实很简单 找到一步步遍历 找到这个数字就返回 找不到就提示用户下 这个数字不存在

int SLFind(SL* ps,SLDateType x)
{
  assert(ps);
  int i = 0;
  for (i = 0; i < ps->size; i++)
  {
    if (ps->a[i] == x)
    {
      return i;
    }
  }
  if (i == ps->size)
  {
    printf("找不到\n");
  }
  return -1;
}


三. 实现在pos位置处插入数字

这个其实和我们的头插表示差不多

只要找到pos的位置

首先判断需不需要扩容

然后再将需要插入的数字依次向后面的排一位

之后再将这个数字插入就好

代码表示如下

void SLInsert(SL* ps, int pos, SLDateType x)
{
  assert(ps);
  assert(pos >= 0 && pos <= ps->size);
  CheckCapacity(ps);
  int end = ps->size - 1;
  while (end >= pos)
  {
    ps->a[end + 1] = ps->a[end];
    end--;
  }
  ps->a[pos] = x;
  ps->size++;
}


四. 在pos处删除数字

这个和头删也差不多

只需要也只不过是前面0的界限变成pos的界限

代码表示如下

void SLErase(SL* ps, int pos)
{
  assert(ps);
  assert(pos >= 0 && pos < ps->size);
  int begin = pos + 1;
  while (begin < ps->size)
  {
    ps->a[begin-1] = ps->a[begin];
    begin++;
  }
  ps->size--;
}


演示代码如下


五 使用pos函数来模拟头增 头删 尾增 尾删

SLInsert(ps, ps->size, x);//尾插
SLErase(ps, ps->size-1);//尾删
SLInsert(ps, 0, x);//头插
SLErase(ps, 0);//头删
目录
相关文章
|
1月前
|
存储 C语言
【数据结构】顺序表
数据结构中的动态顺序表
28 3
【数据结构】顺序表
|
2月前
|
存储
数据结构—顺序表(如果想知道顺序表的全部基础知识点,那么只看这一篇就足够了!)
数据结构—顺序表(如果想知道顺序表的全部基础知识点,那么只看这一篇就足够了!)
|
3天前
|
存储 算法
【数据结构与算法】顺序表
【数据结构与算法】顺序表
4 0
【数据结构与算法】顺序表
|
5天前
|
存储 编译器
【数据结构】顺序表(长期维护)
【数据结构】顺序表(长期维护)
|
6天前
|
存储 缓存
【数据结构】——顺序表与链表
【数据结构】——顺序表与链表
|
2月前
|
存储 C语言
顺序表(数据结构)
顺序表(数据结构)
|
2月前
|
存储 机器学习/深度学习 算法
【数据结构与算法】:手搓顺序表(Python篇)
【数据结构与算法】:手搓顺序表(Python篇)
|
2月前
|
存储 算法 C++
【数据结构与算法】:带你手搓顺序表(C/C++篇)
【数据结构与算法】:带你手搓顺序表(C/C++篇)
|
2月前
|
存储 算法 C语言
【数据结构】详解顺序表
【数据结构】详解顺序表
21 0
|
2月前
|
存储 算法
【C/数据结构与算法】:顺序表的实现
【C/数据结构与算法】:顺序表的实现
25 0