- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构
概论
讨论一种数据结构,需要包括三个方面:数据的逻辑结构(线形,树型,图形结构)、存储结构(顺序存储,链式存储,索引存储,散列存储)和运算集合;
算法的特点、算法和程序的异同; 答 :算法具有(1 )有穷性(2 )确定性(3 )0 个或多个输入(4 )1 个或多个输出(5 )可行性等特征。程序是算法的一种描述方式,通过程序可以在计算机上实现算法。
对某个用C语言算法中某条语句的执行时间分析;时间复杂度的计算;
对给定的时间复杂度进行大小比较,P9中间部分;
以下六种计算算法时间的多项式是最常用的。其关系为:
O(1)O(logn)O(n)O(nlogn)O(n2)O(n3)
指数时间的关系为:
O(2n)O(n!)O(nn)
线性表及其顺序存储
线性表的概念;
线性表是一个线性结构,它是一个含有n≥0个结点的有限序列,对于其中的结点,有且仅有一个开始结点没有前驱但有一个后继结点,有且仅有一个终端结点没有后继但有一个前驱结点,其它的结点都有且仅有一个前驱和一个后继结点。
顺序表的概念、顺序表的存储结构用C语言来表示(P12下边代码);
线性表采用顺序存储的方式存储就称之为顺序表。
顺序表的存储结构的C语言描述如下:
/*顺序表的头文件,文件名sequlist.h */
#define MAXSIZE 100
typedef int datatype;
typedef struct{
datatype a[MAXSIZE];
int size;
}sequence_list;
栈的概念(先进后出);对给定的一个栈可以列出可以完成的出栈和入栈顺序;
下图表明进出栈情况。
队列的概念(先进先出)以及顺序队列的实现;顺序循环队列操作,会计算循环队列的元素个数,会判断循环队列的“队列空”“队列满”的条件;
给定一个大小为MAXSIZE的数组存储一个队列时,经过若干次插入和删除操作后,当队尾指指rear=MAXSIZE时,呈现队列满的状态,而事实上数组的前部可能还有空闲的位置。为了有效利用空间,将顺序存储的队列想象为一个环状,把数组中的最前和最后两个元素看作是相邻的,这就是循环队列
循环队列满的条件是
(rear+1)%MAXSIZE=front
循环队列空的条件是 rear=front
中缀表达式、后缀表达式的概念以及他们之间的转换;P25
中缀表达式(或中缀记法)是一个通用的算术或逻辑公式表示方法, 操作符是以中缀形式处于操作数的中间(例:3 + 4),中缀表达式是人们常用的算术表示方法。 不包含括号,运算符放在两个运算对象的后面,所有的计算按运算符出现的顺序,严格从左向右进行(不再考虑运算符的优先规则,如:(2 + 1) * 3 , 即2 1 + 3 *
—P41
在单链表中查找一个值为x的结点
node ?find(node ?head,int i)
{
int j=1;
node ?p=head;
if(i1) return NULL;
while(pi!=j)
{
p=p-next;j++;
}
return p;
}
?????????????????????????????????????????????????????/
/? 函数功能:单链表第i个结点后插入值为x的新结点 ????/
/? 函数参数:指向node类型变量的指针head ???/
/? datatype 类型变量x,int型变量I ?/
/? 函数返回值:指向node类型变量的指针 ? ?/
/? 文件名:slnklist.c,函数名:insert() ?? ?/
/?????????????????????????????????????????????????????/
node ?insert(node ?head,datatype x,int i)
{
node ?p,?q;
q=find(head,i); /?查找第i个结点?/
if(!qi!=0)
printf(\n找不到第%d个结点,不能插入%d!,i,x);
else{
p=(node?)malloc(sizeof(node)); /?分配空间?/
p-info=x; /?设置新结点?/
if(i==0){ /* 插入的结点作为单链表的第一个结点*/
p-next=head; /?插入(1)?
文档评论(0)