美文网首页
线性表(顺序表)

线性表(顺序表)

作者: 若雨千寻 | 来源:发表于2023-12-13 09:40 被阅读0次

上周找了一周多的房子没更新文章,感受就是钱多找房子好找啊,所以一起努力吧

描述任何结构类型的数据都可以用数据对象集操作集
数据对象集:个人理解为组成某种数据结构元素组成的集合
操作集:主要是增删改查之类的操作

线性表(List):

数据对象集:由n(>=0)个元素构成的有序序列(a1,a2,a3,...an,可以理解n个元素在内存中连续存放的);本文中元素为字符类型(char)
操作集:

线性表L表示List的一个线性表,整数i标识位置(不是指针),元素X标识为线性表存储的数据,则线性表的主要操作集有:
1.List makeEmpty(): 初始化一个空链表;
2.char FindKth(List L, int K): 根据一个下标K找出K位置的元素
3.int Find(List L, char X): 根据给点的元素X找到X第一次出现的位置并返回位置索引
4.void Insert(List L,char X,int i): 在线性表第i-1(下标从零开始计算的)位置插入新元素X
5.void Delete(List L,int i): 删除第i-1位置的元素
6.int Length(List L): 返回线性表的长度
*/

//Position: 位置
typedef int Position;
//List:指向线性表即结构体的指针
typedef struct LNode * List;
//MAXSize:线性表结构体最多存储数据的个数
int MAXSize = 10;
//线性表存储的元素,用结构体List 表示一个线性表,Data[10]为长度为10的一个字符数组,用于存放要插入的数据, int 类型的Last表示当前数组中最后一个数据在数组中的位置,当数组中没有元素即线性表为空时,Last为-1;
struct LNode {
char Data[10];
Position Last;
};

/初始化/
List makeEmpty()
{
List L;
//初始化一块内存给线性表,即结构体
L = (List)malloc(sizeof(struct LNode));
//表为空时,Last为-1
L->Last = -1;
return L;
}

define ERROR -1

/** 查找 */
Position Find(List L, char x)
{
Position i = 0;
//小于等于数组个数 并且不能等于
while (i <= L->Last && L->Data[i] != x) {
i++;
if (i > L ->Last) {
return ERROR;
}else{
return i;
}
}
return ERROR;
}

/** 插入 */

bool Insert(List L,char x,Position p)
{
Position i;
bool result = false;
if (L->Last == -1) {
L->Data[0] = x;
L->Last++;
return true;
}
if (L->Last == MAXSize) {
printf("表满");
return result;
}
if (p < 0 || p > L->Last+1) {
printf("位置不合法");
return result;
}
//将位置p后边的元素向后移动
for (i = L->Last; i >= p; i--) {

    L->Data[i+1] = L->Data[i];
    L->Data[p] = x;//新元素插入
    L->Last++;
    
    result = true;
}
return result;

}

/** 删除 */

bool Delete(List L,Position p)
{
Position i ;
bool result = false;
if (p > L->Last || p < 0) {
printf("不存在:%d\n",p);
return result;
}

for (i = p+1; i <= L->Last; i++) {
    L->Data[i-1] = L->Data[i];
 }
L->Last--;
result = true;
return result;

}

int main(int argc, const char * argv[]) {
//创建
List list = makeEmpty();

Insert(list, 'a', 0);
Insert(list, 'b', 0);
Insert(list, 'c', 1);
bool b = Delete(list, 0);
printf("%d",b);

return 0;

}

相关文章

  • 数据结构之线性表

    1、线性表-顺序表线性表-顺序表

  • 顺序表和链表的区别

    参考:线性表和链表的区别 注:参考文中的‘线性表’准确的说应该是’顺序表‘,链表与顺序表都是线性表。 顺序表:顺序...

  • 数据结构03-线性表之顺序表

    第三章 线性表之顺序表 第三章 线性表之顺序表一、什么是线性表?1> 概念2> 线性表的基本操作二、线性表的顺序存...

  • 数据结构之线性表的链式存储结构

    之前写了线性表的顺序存储结构和有序线性表的顺序存储结构,今天接着写线性表的链式存储结构 数据结构之线性表的顺序存储...

  • 数据结构-双向链表

    (一)什么是链表? 链表是线性表的一种,所谓的线性表包含顺序线性表和链表,顺序线性表是用数组实现的,在内存中有顺序...

  • 记录十一 线性表的链式存储结构

    前言 在前面记录八 线性表的顺序存储结构和记录九 线性表的顺序存储结构扩展(动态顺序表)中我们了解到线性表的顺序存...

  • 线性表及应用

    线性表 “线性表(List):零个或多个数据元素的有限序列。” 线性表的顺序存储结构 线性表的顺序存储结构,指的是...

  • 线性链表

    线性链表 线性表的顺序存储结构:顺序表线性表的链式存储结构:线性链表 线性表的链式存储所占存储空间大于顺序存储。 ...

  • 数据结构的标准形式(C、Python版本):1.顺序表

    一:C语言版本 顺序表基本操作 顺序表的定义/*****InitSize 线性表长度MaxSize 线性表允许的...

  • 数据结构之有序线性表的链式存储结构

    之前写了线性表的顺序存储结构和有序线性表的顺序存储结构以及线性表的链式存储结构,今天接着写有序线性表的链式存储结 ...

网友评论

      本文标题:线性表(顺序表)

      本文链接:https://www.haomeiwen.com/subject/iyfjxxtx.html