计算机软件技术基础绪论.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
2.1.2 数据的逻辑结构 数据的逻辑结构有时可直接称为数据结构。 数据的逻辑结构的三种基本类型:线性表、树和图。 分别属于两大类: (一)线性结构(线性表) 各数据元素之间的逻辑关系可以用一个线性序列简单地表示出来。 线性表是典型的线性结构,它的数据元素只按先后次序联接。有栈、队列、字串、数组和文件。 (二)非线性结构(树,图) 不满足线性结构特点的数据结构称为非线性结构。 树、图等是非线性结构。 树中的数据元素是分层次的纵向联接。 图中的数据元素则有各种各样复杂联接。 其它种类的数据结构由这三种基本结构派生的。 2.1.4 数据结构的运算 对一些典型数据结构中的结点进行操作处理。 1.插入:在数据结构中的指定位置上插入新的数据元素; 2.删除:根据一定的条件,将某个结点从数据结构中删除; 3.更新:更新数据结构中某个指定结点的值; 4.检索:在给定的数据结构中,找出满足一定条件的结点来,条件可以是某个或几个数据项的值; 5.排序:根据某一给定的条件,将数据结构中所有的结点重新排列顺序等。 从操作的特性来看,所有这些运算的操作可以分为二类: 一类是加工型操作:操作改变了存储结构的值(如插入、删除、更新等); 另一类是引用操作:操作只是查询或求得结点的值(如检索等)。 2.2 线性表——最简单,最常用的一种数据结构 2.2.1 线性表 线性是指表中的每个元素呈线性关系,即除第一个外,都有一个直接前趋(predecessor),同时除最后一个元素外,都仅有一个直接后继(successor)。 1.线性表的逻辑结构 线性表L用符号表示为: L=(a1,a2,a3,.. ai...,an) 线性表也可以正式定义为: 若数据结构 L=(D,R)是一个线性表, 则:D是包括a1,a2,a3 .....an 等元素的集合。R中只包含一个关系,即R={ai-1,ai | ai-1,ai∈D, 2≤i≤n }。 关系 ai-1,ai 给出了元素的一种先后次序。a1 称为表的线性起始结点,an 为表的终结点。 (1)顺序表的操作 顺序表在各种高级语言里经常用一维数组实现。 #define MAXSIZE 100 //数组中元素个数的最大值 int list[MAXSIZE],n; //n为线性表中当前的结点数 ①插入运算 插入运算是在线性表的第i个元素和第 i+1个元素之间插入一个一个新元素x。 为了实现这个操作,必须把第i+1个元素到第n个元素依次向后移位一个位置,以便把第i+1个存储位置让出来,存储新元素X。 假定已有一个数组,其值是由小到大排列的,现插入一个新的结点p0,要求插入后仍能保持由小到大的顺序。 考虑: 1.链表h若为空,则将p0的next值为NULL,并将h指向p0。 2.链表h不是空表,则首先确定p0的插入位置。则分三种情况: ①p0插在第一个结点之前:将p0的next指向h的第一个结点,然后将h指向p0。 ②p0插在链表中间:若在ai-1和ai之间插入,可将p0的next指向ai; ai-1的next指向p0. ③p0插在链表的末尾:将最后一个结点的next指向p0,而使p0的next置为NULL。 struct node *insert(struct node *h,struct node *p0) { struct node *p1=h, *p2; if (h==NULL) { h=p0;p0-next=NULL;} else { while((p0-datap1-data)(p1-next!=NULL)) { p2=p1; p1=p1-next;} if (p0-data = p1-data) { if(h==p1) h=p0; else p2-next=p0; p0-next=p1;} else { p1-next=p0;p0-next=NULL; } } return (h); } ②单链表的删除 在已给定的链表h中,删除data值为m的结点。 1.链表h是否指向空表,如果是空表,则报告空表信息。 2.若h不为空: ①一直查到表尾还找不到该结点,则在此链表中无此结点。 ②查找到该结点: 若该结点在头部,则h指向该结点的下一个结点。 若该结点在中部,则前趋结点的指针指向后趋结点。 若该结点在尾部,则前趋结点的指针为NULL。 struct node *del(struct node

文档评论(0)

贪玩蓝月 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档