欢迎来到冰豆网! | 帮助中心 分享价值,成长自我!
冰豆网
全部分类
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • 党团工作>
  • ImageVerifierCode 换一换
    首页 冰豆网 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    川师数学院数据结构试验Word文档格式.docx

    • 资源ID:20597869       资源大小:194.18KB        全文页数:62页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    川师数学院数据结构试验Word文档格式.docx

    1、(类C算法的程序实现)(1) 输入一组数据存入数组中,并将数据元素的个数动态地由输入函数完成。求输入数据的最大值、最小值,并通过函数参数返回所求结果;实验准备:1) 计算机设备;2) 程序调试环境的准备,如TC环境;3) 实验内容的算法分析与代码设计与分析准备。实验步骤:1.安装TC并设置好环境,如果已安装好,可以跳过此步;2.录入程序代码并进行调试和算法分析;对实验内容(1)的操作步骤:1) 用类C语言描述算法过程;2) 用C语言环境实现该算法。对实验内容(2)的操作步骤:1) 完成算法的C实现;2) 分析其时间复杂度和空间复杂度。3.编写实验报告。实验结果:/ 动态分配数组空间#inclu

    2、de stdio.hmalloc.hint size,i;int *pArray;int *p;void malloc_size() pArray=(int *)malloc(size*(sizeof(int);int input_size() printf(please input the size:n);size= scanf(%d,&size); return 0;int input_data()please input the value: for(i=0;i=pi) x=pi; if(y=pi) y=pi;min= %dt max=%dn,x,y);int Output_data()

    3、 p=pArray;before ofpaixu :%dt,*pArray); pArray+;void paixu() int x=0; int i,j;later of paixu: for(j=i+1;j=pj) x=pi;pi=pj;pj=x; ,pi);void main() clrscr(); input_size(); malloc_size(); input_data(); Output_data(); Compare(); paixu();实验二 线性表及其基本操作实验(2学时)(1) 熟练掌握线性表ADT和相关算法描述、基本程序实现结构;(2) 以线性表的基本操作为基础实现

    4、相应的程序;(3) 掌握线性表的顺序存储结构和动态存储结构之区分。(类C算法的程序实现,任选其一。具体要求参见教学实验大纲)(1) 一元多项式运算的C语言程序实现(加法必做,其它选做);(2) 有序表的合并;(3) 集合的并、交、补运算;1.录入程序代码并进行调试和算法分析;2.编写实验报告。/线性链表#define M 6typedef struct node int data; struct node *next;*Sqlist;void Initlialize(Sqlist &L) L=(Sqlist)malloc(sizeof(Sqlist); L-next =NULL;int Get

    5、length(Sqlist L) int i=0; Sqlist p=L-next ; while(p!=NULL) i+; p=p-next; return i;int Getelem(Sqlist L,int i) int j=1,e; while(jdata ;第 %d 个元素是:%dn,i,e); return 1;int Locatelem(Sqlist L,int x)=NULL&p-data !=x) p=p- if(p=NULL) return 0; else %d 是第 %d 个元素n,x,i);void CreatlistF(Sqlist &L,int a,int n)/头

    6、插法/从一个空表开始,读取字符数组a中字符生成新结点,将读取数据存放到新结点数据域,/再将新结点插入当前链表表头、直至结束 Sqlist s; int i;n; s=(Sqlist)malloc(sizeof(Sqlist); s-data =ai; s-next =L- L-next =s;void CreatlistR(Sqlist &L,int a,int n)/尾插法/将新结点插到当前链表表尾,为此必须新增一个尾指针r,使其始终指向当前链表的尾结点 Sqlist s,r; r=L;next=NULL; r-next =s ; r =s;int Inselem(Sqlist &L,int

    7、 i,int x)/1、将所建新结点s的next域指向p的下一结点:s-next=p-next/2、将结点p的next域指向新结点s:next=s int j=1; Sqlist s,p=L- s=(Sqlist)malloc(sizeof(Sqlist);data =x; if(iGetlength(L)i-1)在第 %d 个位置插入数据:,i,x);next =p- p-int Delelem(Sqlist &L,int i) Sqlist p,q; p=L; q=p-next =q- free(q);void Displist(Sqlist L),p-data); printf(“n”)

    8、;void input(int *pArray,int n)请输入数组数据(共含 %d 个元):,n); for(int i=0;i+) Scanf(“%d”,&int main(int argc, char* argv) Sqlist L; int ArrayM,Select; Initlialize(L); do请输入选择方法(1表示头插法,2表示尾插法,0表示结束):Select); switch(Select) case 1:按头插法建立线性表:input(Array,M); CreatlistF(L,Array,M);break; case 2:按尾插法建立线性表:Creatlist

    9、R(L,Array,M);原线性表数据为: Displist(L); Getelem(L,3); Locatelem(L,2); Inselem(L,5,5);修改后的线性表数据为: / Delelem(L,4); while(Select!=0);/运行结果:实验三 栈和队列实验(6学时)(1) 熟练掌握栈和队列的抽象数据类型及其结构特点;(2) 实现基本的栈和队列的基本操作算法程序。(类C算法的程序实现,任选其一)(1) 设计与实现基本的堆栈和队列结构下的各种操作(如堆栈的PUSH、POP等操作)(必做);(2) 以表达式计算为例,完成一个可以进行算术表达式计算功能的算法设计与实现(选做)

    10、; 2.编写实验报告。(1)/*队列存储*/typedef int status;#define QueueSize 10typedef struct sqqueue char dataQueueSize; int front,rear;SqQueue;void InitQueue(SqQueue &qu) qu.front =qu.rear =0;status EnQueue(SqQueue &qu,char x) if(qu.rear +1)%QueueSize=qu.front) qu.rear =(qu.rear+1)%QueueSize; qu.dataqu.rear=x;statu

    11、s DeQueue(SqQueue &qu,char &x) if(qu.rear=qu.front ) qu.front =(qu.front +1)%QueueSize; x=qu.dataqu.front;status GetHead(SqQueue qu,char & if(qu.rear =qu.front) x=qu.data(qu.front+1)%QueueSize;status QueueEmpty(SqQueue qu) if(qu.rear=qu.front) return 1; else SqQueue qu; char e; InitQueue(qu);Queue %

    12、sn,(QueueEmpty(qu)=1?Empty:Not Empty);inser an EnQueue(qu,ainser bnbinser cncinser dnd GetHead(qu,e);Queue of top elem is: %cn,e);show of Queue: while(!QueueEmpty(qu) DeQueue(qu,e);%ct(2)/*用栈实现对表达式的求值运算*/stdlib.h /*数据类型转换库函数*/#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define INFEASIBLE

    13、 -1#define OVERFLOW -2#define STACK_INIT_SIZE 100 /*初始分配量*/#define STACKINCREMENT 10 /*存储空间的分配增量*/typedef int Status;typedef char ElemType;typedef ElemType OperandType; /*操作数*/typedef char OperatorType;typedef struct ElemType *base; ElemType *top; int stacksize;SqStack;Status InitStack(SqStack &S) /

    14、*构造一个空栈S */ S.base = (ElemType *)malloc(STACK_INIT_SIZE * sizeof(ElemType); if(!S.base) exit (OVERFLOW); /*存储空间失败*/ S.top = S.base; S.stacksize = STACK_INIT_SIZE; return OK; /* InitStack*/Status GetTop(SqStack S) /* 若栈不空,则用e返回S的栈顶元素*/ ElemType e; if (S.top = S.base) return ERROR; e = *(S.top-1); ret

    15、urn e; /*GetTop*/Status Push (SqStack &S,ElemType e) /*插入元素e为新的栈顶元素*/ if (S.top - S.base = S.stacksize) /* 栈满,追加存储空间*/ S.base = (ElemType *) realloc ( S.base,(S.stacksize + STACKINCREMENT) * sizeof(ElemType); S.top = S.base + S.stacksize; S.stacksize += STACKINCREMENT; *S.top+ = e; /*Push*/Status Po

    16、p (SqStack &S,ElemType &e) /*取栈顶元素,用e返回*/ /*若栈不空,则删除S的栈顶元素,用e返回其值,并返回OK;否则返回ERROR */ if(S.top = S.base) return ERROR; e = * -S.top; /*Pop*/char In(char c,char OP) /*判断字符c是否属于运算符*/ if(c=35 & c;2表示 else if(mab=2) return 47) a=atoi(&a); /*将字符数转化为整型数*/ if(b47) b=atoi(&b); switch(theta) case return a+b;

    17、break; return a-b; return a*b; return a/b; return 1OperandType EvaluateExpression() /*算术表达式求值的算符优先算法*/ SqStack OPTR,OPND; /* 设OPTR、OPND分别运算符栈和运算数栈*/ OperandType a,b,c; OperatorType theta; InitStack(OPTR); Push(OPTR, InitStack(OPND); c=getchar(); while (c! | GetTop(OPTR)!) if (!In(c,OP)Push(OPND,c);c

    18、=getchar(); switch(Precede(GetTop(OPTR),c) : Push(OPTR,c); c = getchar(); Pop(OPTR,c); Pop(OPTR,theta); Pop(OPND,b); Pop(OPND,a); Push(OPND,Operate(a,theta,b); return GetTop(OPND);int main( )(请输入运算表达式:以#为结束符)n int a; a=(int)EvaluateExpression();/*执行函数EvaluateExpression(),将表达式的最终值强制转换为整型,并用a返回*/,a); getchar(); 测试结果为:表达式中包含+、-、*的情况;表达式中包含()、+、-、*的情况;表达式中包含()、+、-、*、/的情况;表达式中出现负数的情况;实验四 字符串


    注意事项

    本文(川师数学院数据结构试验Word文档格式.docx)为本站会员主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2022 冰点文档网站版权所有

    经营许可证编号:鄂ICP备2022015515号-1

    收起
    展开