- 1、本文档共36页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
程序设计基础第一章、基础概念算法:问题的求解方法。算法的特点【1】有穷性:执行有限步后结束。【2】确定性:算法中的每一个步骤应当是确定的。 【3】有效性:执行有限步骤后给出正确结果。【4】输入和输出:有零个或多个输入。有一个或多个输出。 基本数据结构及其运算数据结构是指相互有关联的数据元素集合。数据的逻辑结构是指反映数据元素之间逻辑关系的数据结构。(1)表示数据元 素的信息;(2)表示各数据元素之间的前后件关系。3.线性结构:数据元素呈线性关系,隐含有序。(1)有且只有一个根结点;(2)每一个结点最多有一个前件,也最多有一个后件。4.非线性数据结构:如果一个数据结构不是线性结构,则称之为非线性结构。5.线性表的顺序存储结构基本特点:(1)线性表中所有元素所占的存储空间是连续的;(2)线性表中各数据元素在存储空间中是按逻辑顺序依次存放的。6.线性表在顺序存储下的插入运算void insl(v,m,n,i,b) ET v[],b; int m,*n,i; { if(*n == m) { printf(overflow\n); return;} if (i>*n-1) i=*n+1; if (i<1) i=1; for (j=*n;j<=i;j――){ v[j]=v[j-1]; v[i-1]=b;*n= *n+1;return;}}7. 线性表在顺序存储下的删除运算 void desl(v,m,n,i) ET v[]; int m,*n,i; { if(*n == 0) { printf(underflow\n);return;} if((i<1) || (i>*n)) { printf(“This element is not in the list \n); return; } for(j=i;j<=*n-1;j++) { v[j-1]=v[j]; *n= *n-1;} return; }8.栈(stack)是限定在一端进行插入与删除的线性表。栈顶:允许插入与删除的一端.栈底:不允许插入与删除的另一端。栈是按照“先进后出” 或“后进先出” 的原则组织数据的。入栈运算void push(s,m,top,x) ET s[],x; int m,*top;{ if (*top==m) { printf(Stack-overflow\n);return;} *top=*top+1; s[*top-1]=x; return; }退栈运算void pop(s,m,top,y)ET s[],*y; int m,*top;{ if (*top==0) { printf(Stack-underflow\n);return;}*y=s[*top-1]; *top=*top-1;return;}表达式的计算*运算符栈,用于在表达式处理过程中存放运算符。在开始时,运算符栈中先压入一个表达式结束符“;”。操作数栈,用于在表达式处理过程中存放操作数。从左到右依次读出表达式中的各个符号:若是操作数,则压入操作数栈,依次读下一个符号。若是运算符,则作进一步判断:①若读出运算符的优先级大于运算符栈栈顶运算符的优先级,则将读出的运算符压入运算符栈,并依次读下一个符号。②若读出的是表达式结束符“;”,且运算符栈栈顶的运算符也是表达式结束符“;”,则表达式处理结束,最后的计算结果在操作数栈的栈顶位置。③若读出运算符的优先级不大于运算符栈栈顶运算符的优先级,则从操作数栈连续退出两个操作数,并从运算符栈退出一个运算符,然后作相应的运算(运算符为刚从运算符栈退出的运算符,运算对象为刚从操作数栈退出的两个操作数),并将运算结果压入操作数栈。队列(equeue)是指允许在一端进行插入,而在另一端进行删除的线性表。循环队列及其运算建立循环队列顺序存储空间(即初始化循环队列顺序存储空间)#include stdlib.hvoid init_queue(q,m,front,rear,s)ET *q; int m, *front, *rear, *s;{ q=malloc(m*sizeof(ET)); *front=m;*rear=m;*s=0; return;}释放循环队列的顺序存储空间 free(q);入队运算void addcq(q,m,rear,front,s,x)ET q[ ],x; int m,*rear,*front,*s;{ if ((*s==1) (*rear== *front)){ printf(Queue-OVERFLOW \n); return; } *rear= *
您可能关注的文档
- 经代公司行政手册-(2011版)详解.doc
- 经典300句详解.doc
- 花儿美,育花人心里更美详解.pptx
- 花卉学实习报告详解.doc
- 第六章项目财务评价讲述.ppt
- 第六章预混料产品设计讲述.ppt
- 经典高考概率分布类型题归纳详解.docx
- 花键轴加工工艺设计详解.doc
- 第六章食品标准的实施与监督讲述.ppt
- 花生田杂草防治策略与农药应用技术详解.doc
- 2024学年第一学期浙江省精诚联盟10月联考高二物理试题含答案及解析.pdf
- 【山东卷】山东省泰安市2024-2025学年高三上学期11月期中考试(11.13-11.15)英语试卷含答案及解析.pdf
- 【浙江卷】浙江省杭州市四校联考2024-2025学年高一上学期10月月考英语试卷含答案及解析.pdf
- 西南大学附中高一10月月考生物试卷含答案及解析.pdf
- 辽宁省县域重点高中协作体2024~2025学年高一上学期10月质量监测试题历史试卷含答案及解析.pdf
- 基于多功能超疏水材料的海水淡化及油水分离研究.pdf
- FKBP5基因多态性与抚养方式对孤儿静息态脑功能的影响.pdf
- 《因明入正理论略抄及后疏》的研习与创作感受.pdf
- HIF-1α、SGK1在子宫内膜增生及子宫内膜癌孕激素抵抗中的表达和意义.pdf
- 初中信息科技大单元教学设计框架构建及应用研究--以《人工智能》大单元为例.pdf
文档评论(0)