下载此文档

数据结构作业.doc


文档分类:IT计算机 | 页数:约31页 举报非法文档有奖
1/31
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/31 下载此文档
文档列表 文档介绍
《数据结构》课程设计报告
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<=&&j<=)
if([i]<[j])
{
C->data[k]=[i];
k++;
i++;
}
else
{
C->data[k]=[j];
k++;
j++;
}
while(i<=)
{
C->data[k]=[i];
k++;
i++;
}
while(j<=)
{
C->data[k]=[j];
k++;
j++;
}
C->last=k-1;
}
void main()
{
seqlist A,B,*C;
int r;
int i,j,k;
printf("请输入线性表A的长度:");
scanf("%d",&r);
= r-1;
printf("请输入线性表A的各元素值:\n");
for(i=0; i<=; i++)
{
scanf("%d",&[i]);
}
printf("\n请输出线性表A的各元素值:\n");
for(j=0;j<=;j++)
printf("%6d",[j]);
printf("\n请输入线性表B的长度:");
scanf("%d",&r);
= r-1;
printf("请输入线性表B的各元素值:\n");
for(i=0; i<=; i++)
{
scanf("%d",&[i]);
}
printf("\n请输出线性表B的各元素值:\n");
for(j=0;j<=B.

数据结构作业 来自淘豆网www.taodocs.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数31
  • 收藏数0 收藏
  • 顶次数0
  • 上传人184846882
  • 文件大小4.71 MB
  • 时间2018-12-03