1.题目:线性表抽象数据类型的实现。
1.1顺序存储结构抽象数据类型定义。
adt list
数据关系:r1=
基本操作:initlist_sq(sqlist *l)
操作结果:构造一个空的线性表l。
getelem(l,i,&e)
初始条件:线性表l已经存在,1<=i<=listlength(l)
操作结果:用e返回l中第i个数据元素的值。
listinsert(&l,i,e)
初始条件:线性表l已经存在,1<=i<=listlength(l)+1
操作结果:在l中第i个位置前插入新的数据元素 e,l的长度加1
listdelete(&l,i,&e)
初始条件:线性表l已经存在且非空,1<=i<=listlength(l)
操作结果:删除l中第i个数据元素,并用 e返回其值,l的长度减1
listlength(l)
初始条件:线性表l已经存在。
操作结果:返回l中数据元素的个数。
listsize(l)
操作结果:返回l的容量。
adt sqlist
1.2链式存储结构抽象数据类型定义。
adt list
数据关系:r1=
基本操作:linklist *creatl(linklist *l)
初始条件:线性表l已经存在。
操作结果:存储输入的数据元素。
listinsert(&l,i,e)
初始条件:线性表l已经存在,1<=i<=listlength(l)+1
操作结果:在l中第i个位置前插入新的数据元素 e,l的长度加1
listdelete(&l,i,&e)
初始条件:线性表l已经存在且非空,1<=i<=listlength(l)
操作结果:删除l中第i个数据元素,并用 e返回其值,l的长度减1
print(l)
初始条件:线性表l已经存在。
操作结果:输出l中的数据元素。
shen_sort(l)
初始条件:线性表l已经存在。
操作结果:对l中的数据元素排序。
amend(&l)
shen_sort(l)
初始条件:线性表l已经存在。
操作结果:修改l中的数据元素。
free(l)
初始条件:线性表l已经存在。
操作结果:释放l中的数据元素。
adt list
2.存储结构定义。
2.1:顺序存储结构定义。
#define ture 1
#define false 0
#define list_init_size 100
#define list_increment 10
typedef int elemtype;
typedef struct
elemtype *elem;
int length;
int listsize;
sqlist;
2.2:链式存储结构定义。
#define null 0
#define len sizeof(struct list)
#define a struct list
struct list
long num;
int name[8];
struct list *next;};
int count; (求数据元素的个数)
3.算法设计。
3.1:顺序存储结构算法设计。
//建立表。
int initlist_sq(sqlist *l)
l->elem = elemtype*)malloc(list_init_size*sizeof(elemtype));
if(!l->elem) return false;
l->length=0;
l->listsize=list_init_size; return ture;
//插入表。
int listinsert(sqlist *l,int i,elemtype e)
elemtype *p,*q,*newbase;
if (i<1 ||i> l->length+1) return false;
if((l->length)>=l->listsize))
p=&(l->elem[i-1]);
for(q=(&l->elem[l->length-1]);q>=p;--q) *q+1)=*q);
*p=e;++(l->length);}
/删除表。int listdelete(sqlist *l,int i,elemtype *e)
elemtype *p,*q;
if (i<1 ||i> l->length) return false;
p=&(l->elem[i-1]);
e=*p;q=l->elem+l->length-1;
for(++p;p<=q;p++)p-1)=*p);
-(l->length);
//取线性表的元素。
getelem(sqlist l,int i,elemtype *e)
if (i<1 ||i > return false;
e=printf("%d",*e);
/求长度。int listlength(sqlist l)
return }
/求容量。int listsize(sqlist l)
return
3.2:链式存储结构算法设计。
/输入函数。
struct list *creat
a *head,*p,*pt;int length,i;
printf("你要输入的个数:")scanf("%d",&length); count=length;
for(i=1;i<=length;i++)
p=(a *)malloc(len);
if(i==1) head=pt=p; else pt->next=p;pt=p;
printf("第%d个数的位置",i);scanf("%ld",&p->num);
while(p->num>99999||p->num<1)
printf("第%d个数的值",i);scanf("%s",&p->name);}
p->next=null;printf你输入的数据:");
return(head);}
/输出函数。
void print(a *head)
a *p;p=head;
printfn");
printf有%d个数",count);
printf位置数值");
if(head!=null)
dowhile(p!=null);}
else printf("sorry!空表");
printfn");
/位置插入函数
struct list *p_insert(a *head)
a *p1,*p2,*inp;int place,i;
printf("要插入的位置:")scanf("%d",&place);
inp=(a *)malloc(len);
printf("位置");scanf("%ld",&inp->num);
while(inp->num>99999||inp->num<1)
printf("数值");scanf("%s",&inp->name);
p1=head;
for(i=1;inext;}
if(i==1) else
count++;printf按位置插入后结果:");
return(head);}
/排序函数
struct list *shen_sort(a *head)
a *p,*min;int i=1;long m_num;int m_name[8];
p=head;min=head;
for(i=1;i<=count;i++)
p=min->next;
while(p!=null)
p=p->next; }min=min->next;} printf排序后结果:");
数据结构课程设计报告
东莞理工学院城市学院。题目 二叉排序树 专业 计算机科学与技术 本 年级 2010级计算机科学与技术专业 1 班。个人姓名 何振江。指导教师 张娟老师 时间 2010至2011第二学期第18周 地点 实验楼615机房 东莞理工学院城市学院计算机与信息科学系制。2011年 6月。实习报告的内容。一 问...
数据结构课程设计报告
设计一个校园导游程序,为来访的客人提供信息查询服务。1 设计学校的校园平面图。选取若干个有代表性的景点抽象成一个无向带权图 无向网 以图中顶点表示校内各景点,边上的权值表示两景点之间的距离。2 存放景点代号 名称 简介等信息供用户查询。3 为来访客人提供图中任意景点相关信息的查询。4 为来访客人提供...
数据结构课程设计报告
河北科技大学。课程设计报告。学生姓名学号。专业班级。课程名称数据结构。学年学期 2 012 2 013学年第 2 学期指导教师 黄春茹。2 0 13年 6 月。课程设计成绩评定表。一 数据结构课程设计目标。二 问题描述。三 需求分析。四 概要设计。五 详细设计。六 软件说明书 给出软件如何使用,使用...