数据结构作业
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《数据结构》课程设计报告
2014-2015学年第一学期
课程设计题目:
设计学生姓名:
所在系部名称:计算机工程系
所在班级名称:计算机科学2013()
参加设计时间:
课程设计课时: 30
指导教师姓名:
年月日
第一题目:
假设有两个集合 A 和 B 分别用两个线性表 LA 和 LB 表示,即线性表中的数据元素即为集合中的成员。现要求一个新的集合C=A∪B。
算法思想:
先初始化线性表LC,将LA的所有元素复制到LC中,然后扫描线性表LB,若LB的当前元素不在线性表LA中,则将其插入到LC中。
Void unionList(List LA, ListB, list &LC)
{
int Lena, Lenc, i;
Elem Type e;
Init List (LC);
for (i=1;i<=ListLength (LA);i++) /*将LA的所有元素插入到LA中*/
{
GetLElem(LA,i,e);
ListInsert(LC,i,e,);
}
Lena=ListLength(LA);/*求线性表的长度*/
Lenb=ListLength(LB);
For(i=1,i<=Lenb;i++)
{
GetElem(LB,i,e);/*取LB中第i个数据元素赋给e*/
If(!LocateElem(LA),e));
ListInsert(LC,++Lena,e);/*C中不存在和e相同者,则插入到LA中*/
}
}
第二题目:
有顺序表LA和LB,其元素均按从小到大的升序排列,编写一个算法将它们合并成一个顺序表LC,要求LC的元素也是按从小到大的升序排列。
算法思想:
依次扫描顺序表A和BD的元素,比较当前元素的值,将较小值的元素赋给C,重复,直到一个线性表扫描完毕,然后将未完的那个顺序表中余下部分赋给C。顺序表C的容量要能够容纳A、B两个顺序表相加的长度。
#include
#include
#define DataType int
#define MAXSIZE 100
typedef struct
{
DataType data[MAXSIZE];
int last;
}seqlist;
seqlist *Init_seqlist()
{
seqlist *L;
L=(seqlist*)malloc(sizeof(seqlist));
if(L){
L->last=-1;
return L;
}
}
void merge(seqlist A,seqlist B,seqlist *C) {
int i,j,k;
i=0;
j=0;
k=0;
while(i<=st&&j<=st)
if(A.data[i] { C->data[k]=A.data[i]; k++; i++; } else { C->data[k]=B.data[j]; k++; j++; } while(i<=st) { C->data[k]=A.data[i]; k++; i++; } while(j<=st) { C->data[k]=B.data[j]; k++; j++; } C->last=k-1; } void main() { seqlist A,B,*C; int r; int i,j,k; printf("请输入线性表A的长度:"); scanf("%d",&r); st = r-1; printf("请输入线性表A的各元素值:\n"); for(i=0; i<=st; i++) { scanf("%d",&A.data[i]); } printf("\n请输出线性表A的各元素值:\n"); for(j=0;j<=st;j++) printf("%6d",A.data[j]); printf("\n请输入线性表B的长度:"); scanf("%d",&r); st = r-1; printf("请输入线性表B的各元素值:\n"); for(i=0; i<=st; i++) { scanf("%d",&B.data[i]); } printf("\n请输出线性表B的各元素值:\n"); for(j=0;j<=st;j++) printf("%6d",B.data[j]); C=Init_seqlist(); merge(A,B,C); printf("\n合并后线性表C的各元素值:\n"); for(k=0;k<=C->last;k++) { printf("%6d",C->data[k]); } printf("\n");