欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    太原理工数据结构实验报告 实验一 顺序表.doc

    • 资源ID:4141584       资源大小:144KB        全文页数:14页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

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

    太原理工数据结构实验报告 实验一 顺序表.doc

    实验报告课程名称: 数据结构B 实验项目: 顺序表 实验地点: 实验楼110 专业班级:计科1301班 学号: 2013001989 学生姓名: 杨喆 指导教师: 孟亮 2015年 1 月 1 日一、实验目的和要求本次实习的主要目的是为了使学生熟练掌握线性表的基本操作在顺序存储结构和链式存储结构上的实现,提高分析和解决问题的能力。要求仔细阅读并理解下列例题,上机调试并编译执行通过,并观察其结果,然后独立完成后面的实验内容,写出完整的实验报告。编写程序过程中注意养成良好的编程风格与习惯,要求程序结构清晰,程序缩进,适当注释。二、实验内容和原理1 设顺序表A中的数据元素递增有序,试写一程序,将x插入到顺序表的适当位置上,使该表仍然有序。2 用单链表ha 存储多项式A(x )=a0+a1x1+a2x2+anxn(其中aI为非零系数),用单链表hb 存储多项式B(x )=b0+b1x1+b2x2+bmxm(其中bj为非零系数),要求计算C(x )= A(x )+B(x ),结果存到单链表hc中。试写出程序。 3 设有n个人围坐在一个圆桌周围,现从第s个人开始报数,数到第m的人出列,然后从出列的下一个人重新开始报数,数到m的人又出列,如此重复,直到所有的人全部出列为止。Josephus问题是:对于任意给定的n,m,s,求出按出列次序得到的n个人员的顺序表。三、主要仪器设备1.设备: PC微机;2.实验环境: windows操作系统;VC+6.0,四、实验结果与分析(必填)(1)程序清单:实验1_1:#include "stdio.h" #include "malloc.h" #define TRUE 1 #define FALSE 0#define OK 1 #define ERROR 0 #define INFEASIBLE -1 #define OVERFLOW -2#define LIST_INIT_SIZE 80 #define LISTINCREMENT 10typedef int Status; typedef int ElemType;typedef struct ElemType *elem; int length; int listsize; SqList;Status InitList_Sq(SqList *L) /构造一个空的线性表 L->elem=(ElemType*) malloc(LIST_INIT_SIZE*sizeof(ElemType); if (!L->elem) return(OVERFLOW); L->length=0; L->listsize=LIST_INIT_SIZE; return OK;Status ListInsert_Sq(SqList *L,int i,ElemType e) /插入x ElemType *q,*p,*newbase; if (i<1 | i>L->length+1) return ERROR; if (L->length>=L->listsize) newbase=(ElemType*)realloc(L->elem,(L->listsize+LISTINCREMENT)*sizeof(ElemType); if (!newbase) return(OVERFLOW); L->elem=newbase; L->listsize+=LISTINCREMENT; q=&(L->elemi-1); /插入位置 for(p=&(L->elemL->length-1);p>=q;-p) *(p+1)=*p; /插入位置之后的元素后移一位 *q=e; /插入e +L->length; /表长加一 return OK; /将x插入到顺序表(递增有序)的适当位置上Status InsertOrderList_Sq(SqList *L,ElemType x) int i=1; ElemType *q,*p; for(i=L->length; i<=0; i+) printf("%d",i); if(x >= L->elemi-1) q=&(L->elemi-1); break; for(p=&(L->elemL->length-1);p>=q;-p) *(p+1)=*p; /插入位置之后的元素后移一位 if(i >= L->length) q=&(L->elemi); *q=x; /插入x +L->length; /表长加一 return OK;Status CreatList_sq(SqList &Lst)int i,n;printf("请输入你要创建的顺序表的长度");scanf("%d",&n);if (InitList_Sq(&Lst)=OK)for(i=n;i>=0;i-) /循环输入一个顺序数组if(ListInsert_Sq(&Lst,1,i)!=OK) break;printf("n顺序表已建立:");for (i=0;i<Lst.length;i+)printf("%d ",Lst.elemi);return 0;Status InsertOrderList_Sq_1(SqList &Lst)int i,n;printf("n请输入你要插入的元素");scanf("%d",&n);InsertOrderList_Sq(&Lst,n);printf("n插入后的顺序表为");for (i=0;i<Lst.length;i+)printf("%d ",Lst.elemi);return OK;Status menu_select()int sn;for(;)printf("n请输入您要进行的功能选项");scanf("%d",&sn);if(sn<1|sn>3)printf("nt输入错误,请重新输入n");elsebreak;return sn;void main() SqList Lst; int i; printf("1.建立一个顺序表;n2.输入你要插入的元素n3.结束n");while(1)switch(menu_select()case 1:CreatList_sq(Lst);printf("n");break;case 2:InsertOrderList_Sq_1(Lst);printf("n");break;case 3:printf("endn");return;实验1_2:#include<stdio.h>#include<malloc.h> #define Ture 1#define False 0#define OK 1#define ERROR 0#define INFEASIBLE -1 #define OVERFLOW -2#define LIST_INIT_SIZE 80 #define LISTINCREMENT 10typedef int Status;typedef int ElemType;typedef struct Lnode ElemType data; struct Lnode *next;Lnode,*LinkList; Status InitList_L(LinkList &L) L = (Lnode *)malloc(sizeof(Lnode); if (L) L->next = NULL; return OK; else return ERROR;Status ListInsert_Link(LinkList &L, int i, ElemType e)LinkList p,q;int j=0;p = L;while( p && j<i-1)p = p->next;j+;/printf("*");/printf("%d",j);q = (Lnode *)malloc(sizeof(Lnode);if(!q) return OVERFLOW;q->data = e;q->next = p->next;p->next = q;/printf("%d",q->data);return OK;Status InputFormula(LinkList &L)int b=0,n=0,i;LinkList p,q;p = L;q = L;printf("您要输入_项式");printf("n");scanf("%d",&n);if(n <= 0)printf("请输入正确的内容");printf("/n");printf("Input a figure according your formula:");printf("n");for(i=1;i<=n;i+)scanf("%d",&b);/printf("%d",b);ListInsert_Link(p,i,b);printf("您输入的二项式系数如下,请确认n");for(i;i>1;i-) q = q->next;printf("%d",q->data);printf(",");printf("n");return OK;Status AdditionA_BToClink(LinkList &A, LinkList &B, LinkList &C)/要求计算C(x )= A(x )+B(x ),结果存到单链表hc中。试写出程序。LinkList p=A, q=B,s=C;int i=1,j,c;p = p->next;q = q->next;while(p && q)c = p->data + q->data;ListInsert_Link(s,i,c);p = p->next;q = q->next;i+;while(p)c = p->data;p = p->next;ListInsert_Link(s,i,c);i+;printf("%d",i);printf("c的值%d",i);while(q)c = q->data;q = q->next;ListInsert_Link(s,i,c);i+;printf("n得到C项式项数为:%d",i-1);if(i<=1)return ERROR;printf("n得到C项式为:");for(i;i>1;i-)s = s->next;c = s->data;printf("%d",c);printf(",");return OK;Status menu_select()int sn;for(;)printf("n请输入您要进行的功能选项");scanf("%d",&sn);if(sn<1|sn>4)printf("nt输入错误,请重新输入n");elsebreak;return sn;void main()LinkList A,B,C;InitList_L(A); InitList_L(B);InitList_L(C);printf("1.输入A项式;n2.输入B项式;n3.合并A,B为C;n4.结束;n");while(1)switch(menu_select()case 1:InputFormula(A);printf("n");break;case 2:InputFormula(B);printf("n");break;case 3:AdditionA_BToClink(A,B,C);printf("nn");break;case 4:printf("endn");return; 实验1_3#include "stdio.h"#include "stdlib.h"#include "malloc.h"#define MAXQSIZE 100#define ERROR 0#define OK 1#define OVERFLOW -2typedef int QElemType;typedef int Status; typedef int ElemType;typedef struct待添加的隐藏文字内容1 ElemType *elem; int length; int listsize; SqList;typedef structQElemType *base;int front;int rear;SqQueue;/队列Status InitQueue(SqQueue &Q) /*-SqQueue &Q 引用Q.base = (QElemType *)malloc(MAXQSIZE *sizeof(QElemType);if(!Q.base)return OVERFLOW;Q.front = Q.rear = 0;return OK;Status EnQueue(SqQueue &Q, QElemType e)if( (Q.rear+1) % MAXQSIZE = Q.front)return ERROR;Q.baseQ.rear = e;Q.rear = (Q.rear+1) % MAXQSIZE;return OK;Status DeQueue (SqQueue &Q, QElemType &e) /*-这里用&是不是为了返回一个eif(Q.front = Q.rear)return ERROR;e = Q.baseQ.front;Q.front = (Q.front + 1) % MAXQSIZE;return OK;/线性表Status InitList_Sq(SqList& L) /构造一个空的线性表 L.elem=(ElemType*) malloc(100*sizeof(ElemType); if (!L.elem) return OVERFLOW; L.length=0; return OK;Status ListInsert_Sq(SqList& L,int i,ElemType e) /插入x ElemType *q,*p; if (i<1 | i>L.length+1) return ERROR; q=&(L.elemi-1); for( p=&( L.elemL.length-1 ); p>=q; -p ) *(p+1) = *p; *q = e; +L.length; return OK;Status AcquireSqlist(SqQueue &Q,SqList& M,int n,int m, int s);/报数输出新线性表void main()SqQueue R;SqList M;InitQueue(R);InitList_Sq(M);int n,s,m;printf("该圆桌有n人,从第s个人开始报数,数到m出列,n然后从出列的下一个人重新开始报数,数到m的人又出列,n如此重复,直到所有的人全部出列为止。n请输入n,s,m的值n");printf("n=");scanf("%d",&n);printf("s=");scanf("%d",&s);printf("m=");scanf("%d",&m);AcquireSqlist(R,M,n,s,m);Status AcquireSqlist(SqQueue &Q,SqList& M,int n,int s, int m)int i,j=1,f,g,k=1,a;if(n > MAXQSIZE)return ERROR;for(i=1;i<=n;i+)EnQueue(Q,i);for(i=1;i<=s;i+)DeQueue(Q,a);EnQueue(Q,a);while(k<=n)for(i=1; i<=m-1; i+)DeQueue(Q,a);EnQueue(Q,a);DeQueue(Q,a);ListInsert_Sq(M,j,a);j+;k+;printf("n您得到的顺序表为");for(g=0;g<n;g+)printf("%d ",M.elemg);printf("nend");return OK;(2)运行结果实验1_1:实验1_2:实验1_3四、实验感想学习并掌握了线性结构的各类储存方式及其应用

    注意事项

    本文(太原理工数据结构实验报告 实验一 顺序表.doc)为本站会员(文库蛋蛋多)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

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




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开