数据结构讲稿(上)ppt263.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构讲稿(上)ppt263

数据结构讲稿(上) 第1章 绪论 void link(HList *h1,HList *h2,HList *h) { int f1,f2,i;DList *p=h1-next,*q,*s,*r; printf(连接字段是:第1个表位序,第2个表位序:); scanf(%d%d,f1,f2); h=(HList *)malloc(sizeof(HList)); h-Row=0; h-Col=h1-Col+h2-Col; h-next=NULL; while (p!=NULL) { q=h2-next; while (q!=NULL) { if (p-data[f1-1]==q-data[f2-1]) /*对应字段值相等*/ { s=(DList *)malloc(sizeof(DList)); /*创建一个数据结点*/ for (i=0;ih1-Col;i++) /*复制表1的当前行*/ s-data[i]=p-data[i]; for (i=0;ih2-Col;i++) s-data[h1-Col+i]=q-data[i];/*复制表2的当前行*/ if (h-next==NULL) h-next=s; else r-next=s; r=s; /*r始终指向最后数据结点*/ h-Row++; /*表行数增1*/ } q=q-next; /*表2下移一个记录*/ } p=p-next; /*表1下移一个记录*/ } r-next=NULL;/*表尾结点next域置空*/ } 2.5 有序表 所谓有序表,是指这样的线性表,其中所有元素以递增或递减方式排列,并规定有序表中不存在元素值相同的元素。在这里仍以顺序表进行存储。 其中只有ListInsert()基本运算与前面的顺序表对应的运算有所差异,其余都是相同的。有序表的ListInsert()运算对应的算法如下: int ListInsert(SqList L,ElemType e) { int i=0,j; while (iL.length L.elem[i]e) i++; if (L.elem[i]==e) return 0; for (j=ListLength(L);ji;j--) /*将elem[i]及后面元素后移一个位置*/ L.elem[j]=L.elem[j-1]; L.elem[i]=e; L.length++; /*顺序表长度增1*/ return 1; } 本章小结 本章的基本学习要点如下: (1)理解线性表的逻辑结构特性。 (2)深入掌握线性表的两种存储方法,即顺序表和链表。体会这两种存储结构之间的差异。 (3)重点掌握顺序表和链表上各种基本运算的实现。 (4)综合运用线性表这种数据结构解决一些复杂的实际问题。 练习题 教材中p50习题2、3和4。 上机实验题 教材中p53的题6和7。 第3章 栈和队列 3.1 栈 3.2 队列 本章小结 3.1.1 栈的定义 3.1.2 栈的顺序存储结构及其基本运算实现 3.1.3 栈的链式存储结构及其基本运算的实现 3.1.4 栈的应用例子 3.1 栈 栈是一种只能在一端进行插入或删除操作的线性表。表中允许进行插入、删除操作的一端称为栈顶。 栈顶的当前位置是动态的,栈顶的当前位置由一个称为栈顶指针的位置指示器指示。表的另一端称为栈底。 当栈中没有数据元素时,称为空栈。 栈的插入操作通常称为进栈或入栈,栈的删除操作通常称为退栈或出栈。 3.1.1 栈的定义 栈顶 栈底 出栈 进栈 栈示意图 例3.1 设有4个元素a、b、c、d进栈,给出它们所有可能的出栈次序。 答:所有可能的出栈次序如下: abcd abdc acbd acdb adcb bacd badc bcad

文档评论(0)

skvdnd51 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档