第2节 线性表 B.ppt

  1. 1、本文档共26页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
动态数组简介 先为顺序表空间设定一个初始分配量,一旦因插入元素而空间不足时,可为顺序表增加一个固定长度的空间增量。 第2章 线性表 2.1 线性表的逻辑结构 2.2 线性表的顺序表示和实现 2.3 线性表的链式表示和实现 2.4 应用举例 2.3 线性表的链式表示和实现 2.3.1 链表的表示 例:请画出26 个英文字母表的链式存储结构。 4)头指针、头结点和首元结点的区别 (3)举例 例1: 例2: sizeof(x)——计算x的长度 malloc(m) —开m字节空间 free(p) ——删除一个变量 附2: 补充结构数据类型的C表示法 2.3.2 链表的实现 (1) 单链表的建立和输出 (2) 单链表的修改 (3) 单链表的插入 (4) 单链表的删除 (1) 单链表的建立和输出 例:用单链表结构来存放26个英文字母组成的线性表(a,b,c,…,z),请写出C语言程序。 * * #define LIST_INIT_SIZE 100 //存储空间的初始分配量 #define LISTINCREMENT 10//存储空间的分配增量 Typedef struct{ ElemType *elem; //表基址(用指针*elem表示) int length; //表长度(表中有多少个元素) int listsize; //当前分配的表尺寸(字节单位) }SqList; 注:三个分量可简写为:L.elem L.length L.listsize 存储结构描述如下(见教材P22): sizeof(x)算符的意思是:计算变量x的长度(字节数) malloc (m)函数的意思是:新开一片大小为m字节的连续空间,并把该区首址作为函数值。 Status InitList_Sq( SqList L ) //创建一个空线性表 { L.elem=(ElemType*)malloc(LIST_INIT_SIZE * sizeof(ElemType)); If(!L.elem) exit(OVERFLOW); //分配失败,结束程序 L.length=0; //暂无元素放入,空表 L.listsize=LIST_INIT_SIZE; //表尺寸=初始分配量 Return OK; } //InitList_Sq 动态创建一个空顺序表的算法: realloc (*p, newsize)函数的意思是:新开一片大小为newsize的连续空间,并把以*p为首址的原空间数据都拷贝进去。 动态顺序表的插入算法 Status ListInsert_Sq(SqList L, int i, ElemType e) { //在顺序线性表中第i个位置之前插入新的元素e if( i 1 or i L.length+1) return ERROR; // 检验i 值的合法性 if ( L.length ≥ L.listsize ) //若表长超过表尺寸则要增加尺寸 { newbase = ( ElemType* ) realloc ( L.elem , (L.listsize + LISTINCREMENT )* sizeof ( ElemType ) ); if (newbase=NULL )exit( OVERFLOW ) ; //分配失败则退出并报错 L.elem = newbase ; //重置新基址 L.listsize = L.listsize + LISTINCREMENT ; } //增加表尺寸 q = L.elem[i-1] ; // q为插入位置。这是没有头结点的情况 for ( p = L.elem[L.length-1] ; p=q ; --p ) *(p+1) = *p ; //插入位置及之后的元素统统后移, p为元素位置 *q= e ; //插入e ++L.length ; //增加1个数据元素,则表长+1 return OK ; } //ListInsert_Sq 动态顺序表的删除算法 Status ListDelete_Sq(SqList

文档评论(0)

187****5045 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档