您的位置:首页 > 娱乐 > 明星 > 太仓网站开发_网站建设沟通_企业qq和个人qq有什么区别_网站建设开发公司

太仓网站开发_网站建设沟通_企业qq和个人qq有什么区别_网站建设开发公司

2024/12/23 16:12:50 来源:https://blog.csdn.net/2401_85637543/article/details/143260607  浏览:    关键词:太仓网站开发_网站建设沟通_企业qq和个人qq有什么区别_网站建设开发公司
太仓网站开发_网站建设沟通_企业qq和个人qq有什么区别_网站建设开发公司

今天我来讲解一下数据结构的基本操作,
我们要知道顺序表是用数组来储存数据的,其基本操作有建立,查找,插入,删除。
下面我来逐一讲解

文章目录

  • 建立
  • 查找
  • 插入
  • 删除

结构体定义

#define MAXSIZE 10
typedef struct Node {
int Data[MAXSIZE];
int last;
}Node;
typedef LNode* List;

这里我们将MAXSIZE定义为10,表明我们的数组最多能储存10个数据

建立

List creat() {
int ch,last=0;
List Node;
Node = (List)malloc(sizeof(struct LNode));
Node->last = 0;
return Node;
}

我们要首先需要malloc函数分配足够的空间,之后将Node->last设置为0,因为一开始我们的表里是没有元素的。之后返回我们创建的表的指针。

查找

int Find(List Node, int target) {
int i = Node->last-1;
for (; i>=0; i--) {if (Node->Data[i] == target)return i;
}
return i;
}

在这里,我们需要输入两个参数,一个是表的地址,一个是我们需要找的值,我们先让 i 等于Node->last-1,比如我们数组有五个元素,但是最后元素的下标是4,所以我们需要减一,我们从最后的位置开始查找,不管找没找到我们都要返回 i ,如果 i 小于0那就说明没找到,反之就是找到了。

插入

void Insert(List Node, int sum,int target) {
if (Node->last == MAXSIZE) {printf("表满");return;
}
if (sum > MAXSIZE||sum<=0) {printf("插入的位置错误");return;
}
for (int i = Node->last; i >= sum; i--) {Node->Data[i] = Node->Data[i - 1];
}
Node->Data[sum-1] = target;
Node->last++;
return;
}

插入函数我们需要输入三个参数,一个是表的地址,一个是插入的位置,一个是要插入的值,首先我们先判断插入的位置是否合法,如果不合法就直接返回,之后我们令i等于Node->last,为什么这里不用减1了呢,因为比如我们有五个元素,现在要插入一个元素,那么就变成来六个元素,第六个元素的下标正好是5,所以我们这里不用减1,我们需要逐个将元素向后移动,直到i小于sum,最后我们将元素插入进去,这里使用sum-1是因为比如我们要插入的位置是1,实际上对应的数组下标是0,所以我们用sum-1,最后不要忘了让Node->last加1。

删除

int Delete(List Node, int target) {
int end = Node->last;
if (target <= 0 || target > Node->last) {printf("位置%d不存在元素");return -1;
}
for (int i = target-1; i < end; i++) {Node->Data[i] = Node->Data[i+1];
}
Node->last--;
return;
}

最后我们进行删除操作,这里我们需要输入两个参数,一个是表的地址,一个是我们需要删除元素的位置,我们还是首先进行删除的位置是否合法,如果不合法我们就返回-1,接下来我们进行元素的移动,与插入不同,我们这里的元素是向前移动,当移动完了后,我们不要忘了让Node->last的值减一。
至此,讲解完毕。

(由于是新手写作,可能有许多地方讲的不清晰,不清楚,欢迎大家留言指正错误)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com