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

    数据结构实验一 顺序结构程序设计.docx

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

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

    数据结构实验一 顺序结构程序设计.docx

    1、数据结构实验一 顺序结构程序设计 实验一 顺序结构程序设计实验课程名:线性表的实验 专业班级:计算机科学与技术 学 号: 姓 名: 实验时间: 11.6-11.13 实验地点: 指导教师: 一、实验目的1、掌握用Visual C+6.0上机调试顺序表的基本方法2、掌握顺序表的基本操作,插入、删除、查找、以及有序顺序表的合并等算法的实现3、掌握用Visual C+6.0上机调试单链表的基本方法4、掌握单链表的插入、删除、查找、求表长以及有序单链表的合并算法的实现5、进一步掌握循环单链表和双链表的插入、删除、查找算法的实现(二)下面是顺序表的部分基本操作实现的算法,请同学们自己设计主函数和部分算法

    2、,调用这些算法,完成下面的实验任务。1、顺序表基本操作的实现。要求生成顺序表时,可以键盘上读取元素,用顺序存储结构实现存储。#define MAXSIZE 100 /MAXSIZE 为线性表可能的最大长度 #include #include typedef int ElemType;typedef struct ElemType dataMAXSIZE; int length; / length为线性表的长度 SqList;SqList l; /线性表定义 void InitList(SqList &L) /初始化操作,将线性表L置空 L.length = 0;/g给顺序表长度初始化为0voi

    3、d CreatSqlist(SqList &L,int n) /建立一个顺序存储的线性表 printf(请输入节点); int i;for(i=0;in;i+)scanf(%d,&L.datai);/读取元素L.length=n;/表的长度就是元素的个数fflush(stdin); /清除一个流void Output(SqList &L) /输出顺序表L int i;for(i=0;iL.length;i+)printf(%5d,L.datai); /每个数据占5列printf(n);int DELETE(SqList &L,int i)/删除一个元素 int j; if(iL.length)

    4、/删除位置 错误 printf(error);return 0; else for(j=i;j=MAXSIZE-1) printf(over flow);return 1;/上溢 else if(iL.length+1) printf(error);return 1; else for(j=L.length;j=i-1;j-) L.dataj+1=L.dataj;/元素位置依次后移一位 L.datai-1=x;/在第i个节点上插入x L.length=L.length+1;/插入之后长度加1 return 0;int GET(SqList &L,int i)/从表中获得一个元素 int m;

    5、if(iL.length)printf(overflow);return 1; else if(i=1)&(i=L.length) m=L.datai-1; printf(%d ,m); return 0;int chazhao(SqList &L,int x)/从表中查找元素 int i,k; printf(n请输入你要查找的元素 x=?); scanf(%d,&x); for(i=0;i=(L.length+1);i+)/从第一个元素开始查找,与X比较。 if(x=L.datai) printf(要查找的元素%d 位于 %d 上nn,x,i+1); k=0; break; if(k!=0)

    6、 printf(%d 不在表中,x); return 0;int PUEGE(SqList &L)/ 删除线性表中重复出现的多余节点 int i=1,j,x,y; while(iL.length) x=L.datai; j=i+1; /*for(j=i+1;jL.length;j+)*/ while(jL.length) y=L.dataj; if(x=y)DELETE(l,j); else j+; i+; return 0;int main()int n,i,k,x;InitList(l);printf(请输入线性表的长度 );scanf(%d,&n);CreatSqlist(l,n);Ou

    7、tput(l); printf(请输入你要删除元素的位置=?);scanf(%d,&k);DELETE(l,k);Output(l);printf(请输入想要 插入的数和位置x,i=?);scanf(%d,%d,&x,&i);INSERT(l,x,i);Output(l);printf(请输入你要取的数在的节点位置);scanf(%d,&i);GET(l,i);chazhao(l,x);PUEGE(l);return 0;运行结果: 2、已知顺序表la和lb中的数据元素按非递减有序排列,将la和lb表中的数据元素,合并成为一个新的顺序表lc,lc中的数据元素仍按非递减有序排列,并且不破坏la和

    8、lb表。# include # define maxnum 20typedef int DataType ;typedef struct DataType datamaxnum ; int length ;SeqList ;int MergeQL(SeqList la , SeqList lb , SeqList *lc) int i , j , k ;if (la.length+1 + lb.length+1maxnum) printf(narray overflow!) ;return 0;i=j=k=0;while(i=la.length & j=lb.length) if (la.da

    9、taidatak+=la.datai+ ;else lc-datak+=lb.dataj+;/* 处理剩余部分 */while (idatak+=la.datai+;while (jdatak+=lb.dataj+;lc-length=k-1;return 1;void main() SeqList la=3,4,7,12,15,4 ;SeqList lb=2,5,7,15,18,19,5 ;SeqList lc ;int i ;if (MergeQL(la,lb,&lc) printf(n) ;for(i=0;i=lc.length ; i+)printf(%4d,lc.datai); 运行

    10、结果:3从有序顺序表A中删除那些在顺序表B和顺序表C中都出现的元素.代码: #include #include #include #include #define LIST_INIT_SIZE 10 #define LISTINCREMENT 10 # define OK 1 # define ERROR 0 typedef int ElemType; typedef struct /* 顺序存储类型 */ int *elem; int length; int listsize; SqList; int InitList(SqList &L) /*构造一个空线性表算法*/ L.elem=(in

    11、t *)malloc(LIST_INIT_SIZE *sizeof(int); if (!L.elem) return(0); L.length=0; L.listsize=LIST_INIT_SIZE; return OK; int input(SqList &L) /*输入*/ int i; coutL.length; for(i=0;iL.length;i+) cout输入第i+1L.elemi; return OK; int rank(SqList &L) /*线性表的排序*/ int i,j,k; for(i=0;iL.length-1;i+) for(j=0;jL.elemj+1)

    12、 k=L.elemj; L.elemj=L.elemj+1; L.elemj+1=k; ; return ERROR; return OK; int output(SqList L) /*输出*/ int i; for(i=0;iL.length;i+) coutL.elemi ; return ERROR; void main() SqList LA,LB,LC; InitList(LA); InitList(LB); InitList(LC); cout创建线性表LA:endl; input(LA); cout创建线性表LB:endl; input(LB); cout创建线性表LC:end

    13、l; input(LC); rank(LA); rank(LB); rank(LC); cout输出线性表LB各元素的值:; output(LB); coutendl; cout输出线性表LC各元素的值:; output(LC); coutendl; cout输出原线性表LA各元素的值:; output(LA); coutendl; int i,j,k; for(i=0;iLA.length-1;i+) for(j=0;jLB.length-1;j+) if(LA.elemi=LB.elemj) for(k=i;kLA.length-1;k+) LA.elemk=LA.elemk+1; LA.

    14、length-; for(i=0;iLA.length-1;i+) for(j=0;jLC.length-1;j+) if(LA.elemi=LC.elemj) for(k=i;kLA.length-1;k+) LA.elemk=LA.elemk+1; LA.length-; cout输出新的线性表LA各元素的值:; output(LA); coutendl; 运行结果:4将一顺序存储的线性表(设元素均为整型量)中所有零元素向表尾集中,其他元素则顺序向表头方向集中。若输入:1 2 3 0 0 5 0 4 7 8则输出:1 2 3 5 4 7 8 0 0 0运行代码:#include #incl

    15、ude #include #include #define LIST_INIT_SIZE 10 #define LISTINCREMENT 10 # define OK 1 # define ERROR 0 typedef int ElemType; typedef struct /* 顺序存储类型 */ int *elem; int length; int listsize; SqList; int InitList(SqList &L) /*构造一个空线性表算法*/ L.elem=(int*)malloc(LIST_INIT_SIZE *sizeof(int); if (!L.elem)

    16、return(0); L.length=0; L.listsize=LIST_INIT_SIZE; return OK; int input(SqList &L) /*输入*/ int i; coutL.length; for(i=0;iL.length;i+) cout输入第i+1L.elemi; return OK; int output(SqList L) /*输出*/ int i; cout输出新的线性表各元素的值:; for(i=0;iL.length;i+) coutL.elemi ; return ERROR; void main() SqList L; InitList(L);

    17、 input(L); output(L); coutendl; int i,j,k; for(i=0;iL.length-1;i+) for(j=0;jL.length-1-i;j+) if(L.elemj=0) k=L.elemj; L.elemj=L.elemj+1; L.elemj+1=k; output(L); coutendl; 运行结果:5、单链表基本操作的实现。要求生成单链表时,可以键盘上读取元素,用链式存储结构实现存储。代码:#include #include #include #include typedef int elemtype;typedef struct lnode

    18、 elemtype date; struct lnode *next;lnode;lnode *creat(void) lnode *p2,*p1; lnode *head; int n; n=0; p1=p2=(lnode *)malloc(sizeof(lnode); head=NULL; cinp1-date; while(p1-date0) n=n+1; if(n=1) head=p1; else p2-next=p1; p2=p1; p1=(lnode *)malloc(sizeof(lnode); cinp1-date; p2-next=NULL; return head;void

    19、 print(lnode *head) lnode *p; p=head; if(head=NULL) cout空表; if(head!=NULL) do coutsetw(3)date; p=p-next; while(p!=NULL); coutnext; free(p1); else while(p1-next&jnext; j+; if(p1-next=0|ji-1) cout没有发现next=p1-next; free(p1); return head;lnode *insert(lnode *&head,int i,elemtype e) lnode *p1,*p2,*s; int

    20、 j=0; p1=head; s=(lnode *)malloc(sizeof(lnode); s-date=e; if(head=NULL&i=1) head=s; else while(p1-next&jnext; j+; p2-next=s; s-next=p1; return head;int main() lnode *head; head=creat(); int i; elemtype e; print(head); int num; cout请输入要删除的第几位数:num; del(head,num); print(head); cout请输入在第几位插入什么数:ie; ins

    21、ert(head,i,e); print(head); return 0;运行结果:6、已知单链表la和lb中的数据元素按非递减有序排列,将la和lb中的数据元素,合并为一个新的单链表lc,lc中的数据元素仍按非递减有序排列。要求不破坏la表和lb表的结构。破坏la表和lb表的结构。7、编程实现两个循环单链表的合并。代码:#include #include typedef int ElemType;typedef struct LNode ElemType data; struct LNode *next;LNode,*LinkList;int print(LinkList &L,int n)

    22、;int hebing(LinkList L1,int n,LinkList L2,int m,LinkList &L);void creat(LinkList &L,int n) LNode *p1,*p2; p1=p2=(LNode *)malloc(sizeof(LNode); L=NULL; int i; for(i=0;ip1-data; if(i=0) L=p1; else p2-next=p1; p2=p1; p1=(LNode *)malloc(sizeof(LNode); p2-next=L;int main() LNode *L1,*L2,*L; cout请输入第一个单链表

    23、的长度:n; creat(L1,n); print(L1,n); cout请输入第二个单链表的长度:m; creat(L2,m); print(L2,m); cout合并后endl; hebing(L1,n,L2,m,L); print(L,m+n); return 0;int print(LinkList &L,int n) int i; for(i=0;in;i+) coutdatanext; return 0;int hebing(LinkList L1,int n,LinkList L2,int m,LinkList &L) int i; LNode *p1; L=L1; p1=L1;

    24、 for(i=1;inext; for(i=1;inext; p1-next=L2-next; return 0;运行结果:8、线性表的逆置:设有一个线性表(e0, e1, , en-2, en-1),请编写一个函数将这个线性表原地逆置,即将线性表内容置换为(en-1, en-2, , e1, e0)。线性表中的数据可以为整数、字符或字符串,试分别采用顺序存储结构和链式结构来实现。程序代码:#include #include typedef int ElemType;typedef struct LNode ElemType data; struct LNode *next;LNode,*LinkList;int print(LinkList &L,int n);int nizhi(LNode *&L,int n);void creat(LinkList &L,int n) LNode *p1,*p2; p1=p2=(LNode *)malloc(sizeof(LN


    注意事项

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

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




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

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开