数据结构教程第2章--线性表教案资料.pptVIP

  • 3
  • 0
  • 约7.5千字
  • 约 87页
  • 2021-09-22 发布于浙江
  • 举报

数据结构教程第2章--线性表教案资料.ppt

数据结构课程——涉及数学、计算机硬件和软件 数据结构定义——指相互有关联的数据元素的集合, 用D_S=( D, R )表示 数据结构内容——数据的逻辑结构、存储结构和运算 算法效率指标——时间效率和空间效率 ;; 线性表的逻辑结构 线性表的顺序存储结构 线性表的链式存储结构(单链表) 应用实例; 若结构是非空有限集,则有且仅有一个开始结点和一个终端结点,并且所有结点都最多只有一个直接前趋和一个直接后继。;( a0 , a1 … ai-1,ai, ai+1 ,…, an-1) ;例1 分析26 个英文字母组成的英文表;2. 线性表的基本操作 Initiate(L) 初始化操作。建立一个空线性表L。 Length(L) 求表长。求给定线性表L中数据元素 的个数。 Get(L,i) 读取元素。读取线性表L中第i个数 据元素。 Insert(L,i,x) 前插。在线性表L中第i个数据元素 ai之前插入一个新的数据元素x。 Delete(L,i,x) 删除。删除线性表L中第i个的数 据元素,并将其保存在x中。 Locate(L,x) 定位函数。返回线性表L中元素值 等于x的数据元素ai的序号i。 ;2.2 线性表的顺序存储结构—顺序表 ; ;一个线性表,数据元素M下标的范围是0到9,每个数据元素用相邻的5个字节存储。设存结点M[0]的第一个字节的地址是98,则M[3]的第一个字节的地址是 ;用c语言定义顺序表;typedef struct { elemtype List[Maxlen]; int num; } SeqList;;二、顺序表的基本操作;2.求表长 ListLength(L);4. 插入(在第i个(0=i=num)数据元素之前插入 一个新的数据元素x);i位置非法?; int ListInsert(SeqList *L, int i, elemtype x) { int j; if( i0 || iL-num) { printf(“error\n”); return 0; } if (L-num)=Maxlen) { printf(“overflow\n”); return 0; } for(j=L-num-1;j=i;j--) L-list[j+1]=L-List[j]; L-List[i]=x; L-num=L-num+1; return 1; };该算法的时间复杂度:;5.删除(删除第i个(0=i=num-1)数据元素,并将其保存在x中);删除算法流程图;用c语言描述删除算法;该算法的时间复杂度:;算法时间主要耗费在移动元素的操作上,因此 计算时间复杂度的基本操作(最深层语句频度) T(n)= O (移动元素次数) 平均时间复杂度T(n)= O (n) 移动元素的个数取决于插入或删除元素的位置.;三、顺序存储结构的特点;第二章 线性表; 单链表基本概念 单链表基本操作 ;单链表的基本概念; 结点;不带头结点的单链表;何谓头指针、头结点和首元结点?;一个线性表的逻辑结构为:(ZHAO,QIAN,SUN,LI,ZHOU,WU,ZHENG,WANG),其存储结构用单链表表示如下,请问其头指针的值是多少?;上例链表的逻辑结构示意图有以下两种形式:; 相关知识;;例如:定义结构体类型 typedef struct nodetype { int data; struct nodetype *next; }SLNode;;(1)指针后移操作 p=p-next;int ListInitiate( SLNode **head ) { if((*head=(SLNode* )malloc(sizeof(SLNode)))==NULL) return 0; (*head) - next=NULL; return 1; };(2)求当前数据元素个数;(3) 取元素(寻找到第i个结点ai并返回该结点的数据

文档评论(0)

1亿VIP精品文档

相关文档