博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
考研数据结构-顺序表(基本操作)
阅读量:5238 次
发布时间:2019-06-14

本文共 1760 字,大约阅读时间需要 5 分钟。

1、本代码实现与王道和严蔚敏老师的教材基本保持一致。此代码主要用于考研用,为简化代码,顺序表并没有像严蔚敏老师的教材上那样使用动态分配。

2、注意本代码中元素的位置i=(元素的下标+1)。即线性表中元素的位置是从1开始的,而数组中元素的下标是从0开始的。

所以插入位置的范围是(1=<i<=L.length+1),删除位置的范围是(1<=i<=L.length)。 (插入位置一般是在指定位置之前。)

 

(根据王道单科)

假设元素个数为n个:

在任意位置插入元素的概率为1/(n+1)                    |         在任意位置删除元素的概率为1/n

在i位置插入元素需移动(n-i+1)个元素                    |        在i位置删除元素需移动(n-i)个元素    

在任意位置插入元素的概率为1/(n+1)                    |         在任意位置删除元素的概率为1/n

 

有些看了天勤数据结构的同学可能会疑问,为什么天勤里面写的却是

在任意位置插入元素的概率为1/(n+1)                    |         在任意位置删除元素的概率为1/n

在i位置插入元素需移动(n-i)个元素                    |        在i位置删除元素需移动(n-i-1)个元素    

在任意位置插入元素的概率为1/(n+1)                    |         在任意位置删除元素的概率为1/n

这是因为天勤的书他的元素位置i也是从0开始的,因此它的元素的位置i=元素的下标。他的书其实很多地方都简化了代码。比如说没有再写ElemType,而是直接写int类型等等。

 

 

好了,让我们看看代码吧。

本代码实现函数有:

void InitList(Sqlist &L)
bool ListInsert(Sqlist &L,int i,ElemType e)
bool ListDelete(Sqlist &L,int i,ElemType &e)
bool getElem(Sqlist L,int i,ElemType &e)
int LocateElem(Sqlist L,ElemType e) void ListLoad(Sqlist L)
#include
#define true 1#define false 0#define MaxSize 100 #define ElemType int#define Status int typedef struct{ ElemType data[MaxSize]; int length; }Sqlist;//构造一个空的线性表L void InitList(Sqlist &L){ L.length=0;}bool ListInsert(Sqlist &L,int i,ElemType e){ //将元素e插到顺序表L中第i个位置 if(i<1||i>L.length+1) return false; if(L.length>=MaxSize) return false; for(int j=L.length;j>=i;j--) L.data[j]=L.data[j-1]; L.data[i-1]=e; L.length++; return true;}bool ListDelete(Sqlist &L,int i,ElemType &e){//删除L中第i个位置的元素 if(i<1||i>L.length) return false; e=L.data[i-1]; for(int j=i;j
L.length)return false; e=L.data[i-1]; return true; } //返回L中第一个元素值等于e的位置 int LocateElem(Sqlist L,ElemType e){ int i; for(i=0;i
 

 

 
 

 插入元素ListInsert:

 

删除元素(ListDelete):

 

查找指定元素的位置(LocateElem)

 

转载于:https://www.cnblogs.com/double891/p/9124828.html

你可能感兴趣的文章
linux php编译安装
查看>>
name phone email正则表达式
查看>>
721. Accounts Merge
查看>>
「Unity」委托 将方法作为参数传递
查看>>
重置GNOME-TERMINAL
查看>>
redis哨兵集群、docker入门
查看>>
hihoCoder 1233 : Boxes(盒子)
查看>>
oracle中anyData数据类型的使用实例
查看>>
C++对vector里面的元素排序及取任意重叠区间
查看>>
软件测试——性能测试总结
查看>>
12.4站立会议
查看>>
Java Concurrentmodificationexception异常原因和解决方法
查看>>
客户端访问浏览器的流程
查看>>
codeforces水题100道 第二十二题 Codeforces Beta Round #89 (Div. 2) A. String Task (strings)
查看>>
c++||template
查看>>
[BZOJ 5323][Jxoi2018]游戏
查看>>
编程面试的10大算法概念汇总
查看>>
Vue
查看>>
python-三级菜单和购物车程序
查看>>
条件断点 符号断点
查看>>