1、金陵科技学院实验报告学 生 实 验 报 告 册课程名称:算法与数据结构实验项目名称: 顺序表 实验学时: 2 同组学生姓名: 实验地点: 工科楼 A205 实验日期: 2013 年 10 月 16 日 实验成绩: 批改教师: 批改时间: 金陵科技学院实验报告实验 1 顺序表一、实验目的和要求掌握顺序表的定位、插入、删除等操作。二、实验仪器和设备Turbo C 2.0三、实验内容与过程(含程序清单及流程图)1、必做题(1) 编写程序建立一个顺序表,并逐个输出顺序表中所有数据元素的值。编写主函数测试结果。(2) 编写顺序表定位操作子函数,在顺序表中查找是否存在数据元素 x。如果存在,返回顺序表中和
2、 x 值相等的第 1 个数据元素的序号(序号从 0 开始编号) ;如果不存在,返回 1。编写主函数测试结果。(3) 在递增有序的顺序表中插入一个新结点 x,保持顺序表的有序性。解题思路:首先查找插入的位置,再移位,最后进行插入操作;从第一个元素开始找到第一个大于该新结点值 x 的元素位置 i 即为插入位置;然后将从表尾开始依次将元素后移一个位置直至元素 i;最后将新结点 x 插入到 i 位置。(4) 删除顺序表中所有等于 X 的数据元素。2、选做题(5) 已知两个顺序表 A 和 B 按元素值递增有序排列,要求写一算法实现将 A 和 B 归并成一个按元素值递减有序排列的顺序表(允许表中含有值相同
3、的元素) 。程序清单:1、#define maxsize 100typedef structint datamaxsize;int last;sequenlist;main()int i;sequenlist l=2,5,6,8,2,8,4,3,7;printf(“nThe list is:“);金陵科技学院实验报告for(i=0;ix) break;for(j=l.last;j=i-1;j-)l.dataj+1=l.dataj;l.datai-1=x;l.last+;printf(“the list after insertion is:n“);for(j=0;jtypedef int da
4、tattype;typedef struct nodechar data;struct node *next;linklist;main()char ch;linklist *head,*s,*r,*p;head=malloc(sizeof(linklist);金陵科技学院实验报告r=head;scanf(“%c“,while(ch!=$)s=malloc(sizeof(linklist);s-data=ch;r-next=s;r=s;scanf(“%c“,r-next=NULL;r=head-next;while(r!=NULL)printf(“%c“,r-data);r=r-next;2、
5、#include “stdio.h“#include “stdlib.h“typedef struct nodeint data;struct node *next;linklist;main()int x,y;linklist *head,*s,*r,*p,*q,*m,*n;clrscr();head=malloc(sizeof(linklist);r=head;printf(“input the order numbers :“);scanf(“%d“,while(x!=0)s=malloc(sizeof(linklist);s-data=x;r-next=s;r=s;scanf(“%d“
6、,金陵科技学院实验报告r-next=NULL;printf(“Please input the insert value:“);scanf(“%d“,p=head-next;while(p!=NULL)if (p-datanext;else break;q=malloc(sizeof(linklist);q-data=y;m=head;while(m-next!=p) m=m-next;q-next=p;m-next=q;n=head-next;printf(“the list are:“);while(n!=NULL)printf(“%3d“,n-data);n=n-next;3、#incl
7、ude “stdio.h“#include “stdlib.h“typedef struct nodeint data;struct node *next;linklist;main()int a;linklist *head,*s,*r,*p,*q,*t;clrscr();head=malloc(sizeof(linklist);r=head;printf(“Input some numbers:“);scanf(“%d“,金陵科技学院实验报告while(a!=0)s=malloc(sizeof(linklist);s-data=a;r-next=s;r=s;scanf(“%d“,r-nex
8、t=NULL;printf(“n The linklist before changed is:n “);p=head-next;while(p)printf(“%d“,p-data);p=p-next;p=head-next;q=p-next;while(q!=NULL)t=q-next;q-next=p;p=q;q=t;head-next-next=NULL;head-next=p;printf(“nAfter changed:n“);p=head-next;while(p!=NULL)printf(“%d“,p-data);p=p-next;四、实验结果与分析(程序运行结果及其分析)1、输入:1 2 3 a b c $输出结果:1 2 3 a b c 2、输入:input the order numbers : 1 3 5 7 8 9 0