- 4
- 0
- 约1.78千字
- 约 11页
- 2018-09-22 发布于江苏
- 举报
顺序表的类型明及操作
;;2. 求表长 length_sqlist(l)
定义
求线性表的元素个数
基本思想
l.last 就表示了线性表的长度
算法
int length_sqlist(sqlist l)
{
return (l.last);
};3. 读表元 get_sqlist(l,i)
定义
求线性表 l 的第 i 个数据元素的值
基本思想
数组第i-1个单元就存放着线性表的第i个元素
算法
datatype get_sqlist(sqlist l ,int i )
{
return (l.data[i-1]);
};4. 定位 locate_sqlist(l,x)
定义
求线性表 l 中值等于 x 的结点序号的最小值,当不存在时结果为 0
基本思想
从前往后依次比较各结点值是否等于x
算法
int locate_sqlist(sqlist l, datatype x)
{ int i=0; /*从第一个开始查找*/
while ( (i=l.last-1) (l.data[i]!=x) )
i++; /*当前没有找到,继续试下一个*/
if (i=l.last-1) return(i+1);
/*在范围内,i+1为结果,注意C语言的数组是从0开始的*/
else return (0);
}
;5. 插入 insert_sqlist(l,x,i)
定义
线性表的插入操作是指在表的第i-1个数据元素和第i个数据元素之间插入一个新的 数据元素
(a1,…,ai-1,ai,…,an)
= (a1,…,ai-1,x,ai,…,an)
数据ai-1和ai之间的逻辑关系发生了变化
由于逻辑上相邻的数据元素在物理位置上也是相邻的,因此,除非i=n+1,否则必须移动元素才能反映这个逻辑关系的变化。; ;算法
void insert_sqlist(sqlist l,datatype x,int i)
{ int j;
if ( l.last==maxsize)
printf(“表满”); /*表容量已到最大值,无法插入*/
else if ( (il.last+1) || (i1) )
printf(“非法位置”); /*要求插入的位置不合法,无法插入*/
else
{for (j=l.last-1;j=i-1;j--) /*从最后一个元素到第i个元素*/
l.data[j+1]=l.data[j]; /*当前元素后移一位*/
l.data[i-1]=x; /*把x放入第i位*/
l.last++; /*表长加1*/
}
}
;6. 删除 delete_sqlist(l,i)
定义
线性表的删除操作是指将表的第i个数据元素删除,使长度为n的线性表:
(a1,…,ai-1,ai,ai+1,…,an)
变成长度为n-1的线性表
(a1,…,ai-1,ai+1,…,an)
数据元素ai-1、ai、ai+1之间的逻辑关系发生了变化,和插入操作一样同样需要移动数据元素,除非删除的是最后一个元素。; ;算法
void delete_sqlist(sqlist l, int i)
{int j;
if (l.last==0)
printf(“表空”); /*空表无法删除*/
else if ( (il.last) || (i1) )
printf(“非法位置”); /*位置不合法,无法删除*/
else
{for(j=i;j=l.last-1;j++)
/*从第i+1个元素到最后一个元素*/
l.data[j-1]=l.data[j]; /*当前元素前移一位*/
l.last--; /*表长减1*/
}
}
您可能关注的文档
最近下载
- Ф90橡胶冷喂料挤出机毕业设计说明书.docx VIP
- 《行测》《行测》题库型介绍(基础题).docx VIP
- 北师大五年级下册全册数学教案.docx VIP
- 石蜡制备高碳醇工艺条件研究.pdf VIP
- 2025届宁夏回族自治区吴忠市盐池县高三下学期第一次模拟考试物理试卷.pdf VIP
- 浙江省中小学正高级教师职称评审表2017.pdf VIP
- 80辛集互联网搜索引擎在成功抓获漂白身份潜逃十二年绑架逃犯中的具体应用3542.pdf VIP
- 《故宫IP联名文创产品开发与销售总结》_国潮文创产品经理.docx
- 人教版(2019)必修第一册 Unit 3 Sports and Fitness Reading and thinking Living Legends 教学设计.pdf VIP
- 专题01+完形填空之综合解题技巧(复习课件)(全国通用)2026年高考英语二轮复习讲练测.pptx VIP
原创力文档

文档评论(0)