计算机软件设计第二版知识点总结详解.docx

计算机软件设计第二版知识点总结详解.docx

  1. 1、本文档共36页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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= *

文档评论(0)

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

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

1亿VIP精品文档

相关文档