计算机软件课设报告.docx

上传人:b****5 文档编号:3261494 上传时间:2022-11-21 格式:DOCX 页数:59 大小:265.59KB
下载 相关 举报
计算机软件课设报告.docx_第1页
第1页 / 共59页
计算机软件课设报告.docx_第2页
第2页 / 共59页
计算机软件课设报告.docx_第3页
第3页 / 共59页
计算机软件课设报告.docx_第4页
第4页 / 共59页
计算机软件课设报告.docx_第5页
第5页 / 共59页
点击查看更多>>
下载资源
资源描述

计算机软件课设报告.docx

《计算机软件课设报告.docx》由会员分享,可在线阅读,更多相关《计算机软件课设报告.docx(59页珍藏版)》请在冰豆网上搜索。

计算机软件课设报告.docx

计算机软件课设报告

数据结构实验报告

030910337徐大生

(一)实验对象、目的和要求

1.合并顺序表

实现两个顺序表的合并,将共同拥有的元素只存其一。

2.顺序表

实现顺序表的定义、创建、插入和删除操作,将数据元素显示出来。

3.单链表

实现单链表的定义、创建、插入和删除操作,将数据元素显示出来。

4.顺序栈

实现顺序栈的定义、创建、插入和删除操作,将数据元素显示出来。

5.链栈

实现链栈的定义、创建、插入和删除操作,将数据元素显示出来。

6.顺序队

实现顺序队的定义、创建、插入和删除操作,将数据元素显示出来。

7.链队

实现链队的定义、创建、插入和删除操作,将数据元素显示出来。

8.二叉树

二叉树的链式存储结构的数据结构定义、创建、先序/中序/后序遍历,并将结果序列输出。

9.图

图的邻接表和邻接矩阵数据结构的定义、创建;图的深度优先遍历、广度优先遍历。

10.查找

顺序查找、二分查找。

11.排序

插入排序、选择排序、冒泡排序。

12.通讯录的制作

12.1通讯录设计目的:

运用〈数据结构〉中的算法思想作数据结构,结合C语言基本知识,编写一个通讯录管理系统。

以把所学数据结构知识应用到实际软件开发中去。

通过完成本课题,进一步熟悉C语言的基本知识,并掌握数据结构的一些基本算法思想,掌握C语言的文件操作(包括从磁盘读入和向磁盘写入内容),进一步熟悉指针的用法,数组的建立运用和函数的调用等。

12.2通讯录设计内容:

本系统应完成以下几方面的功能:

①输入信息(Enter()):

调用此函数用以输入数据到内存中,此过程包括建立相应的链表或相应的数组,便于读取

②显示信息(Display()):

用以显示输入的数据,包括从内存中读出和从磁盘中读出

③查找(Search()):

以姓名作为关键字查找要找的信息

④删除信息(Delete()):

用以删除选定的输入信息(姓名作为关键字)

⑤存盘(Save()):

调用此函数将内存中的数据保存至磁盘中

⑥装入(Load()):

调用此函数用以将之前保存在磁盘的内容读入到内存中或显示到屏幕上

注:

本课题中输入的数据应包括以下几项信息:

姓名(NAME)学校(SCHOOL)城市(CITY)邮编(EIP)国家(STATE)

(二)程序流程图

1.顺序表合并

2.顺序表

3.链表

4.顺序栈

5.链栈

6.顺序队

7.链队

8.二叉树

9.图

10.查找

10.1顺序查找

10.2二分查找

11.排序

11.1插入排序

11.2选择排序

11.3冒泡排序

通讯录

12.链栈

(三)源程序清单

1.合并顺序表

#include

#include

#include

#defineSeqListstructlisttype

#defineMaxSize1000

SeqList

{

intdata[MaxSize];

intlast;

};

 

voidmerge(SeqList*p,SeqList*q,SeqList*c)

{

inti,j,k,a;

i=0;j=0;k=0;

while(i<=p->last)

{

c->data[k]=p->data[i];

k++;i++;

}

while(j<=q->last)

{

i=0;

while(i<=p->last&&p->data[i]!

=q->data[j])

i++;

if(i>p->last)

{

c->data[k]=q->data[j];

k++;

}

j++;

}

for(a=0;a

printf("%d",c->data[a]);

}

SeqList*init_SeqList()

{

SeqList*p;

p=(SeqList*)malloc(sizeof(SeqList));

p->last=-1;

returnp;

}

voidmain()

{

SeqList*p;

p=init_SeqList();

inti,j;

i=0;

j=0;

printf("PleaseinputSeqListp:

\n");

scanf("%d",&p->data[i]);

while(p->data[i]!

=-1)

{

i++;

scanf("%d",&p->data[i]);

p->last++;

}

SeqList*q;

q=init_SeqList();

printf("PleaseinputSeqListq:

\n");

scanf("%d",&q->data[j]);

while(q->data[j]!

=-1)

{

j++;

scanf("%d",&q->data[j]);

q->last++;

}

SeqList*c;

c=init_SeqList();

merge(p,q,c);

}

2.顺序表

#include

#include

#defineseqliststructlisttype

#definemaxsize1000

seqlist

{

intdata[maxsize];

intlast;

};

seqlist*init_seqlist()//初始化

{

seqlist*L;

L=(seqlist*)malloc(sizeof(seqlist));

L->last=-1;

returnL;

}

intinsert_seqlist(seqlist*L,inti,intx)//插入

{

intj;

if(L->last==maxsize-1)

{

printf("Theseqlistisfull.\n");

return-1;

}

if(i==L->last+1)

L->data[L->last+1]=x;

else

{

for(j=L->last;j>=i;j--)

L->data[j+1]=L->data[j];

L->data[i]=x;

}

L->last++;

return1;

}

intDelete_seqlist(seqlist*L,intb)//删除

{

intj;

if(b<0||b>L->last)

{

printf("bisinvalid!

\n");

return(0);

}

for(j=b;j<=L->last-1;j++)

L->data[j]=L->data[j+1];

L->last--;

return

(1);

}

voidmain()

{

seqlist*L;

L=init_seqlist();

inti,j,a,x,p,b;

i=0;

j=0;

printf("PleaseinputSeqListL:

\n");

scanf("%d",&p);

while(p!

=-1)//出现-1时结束创建顺序表

{

L->data[i]=p;

i++;

L->last++;

scanf("%d",&p);

}

printf("pleaseinputthenumbertoinsert:

a=;x=.\n");

scanf("%d",&a);

scanf("%d",&x);

if(insert_seqlist(L,a,x))

{

printf("Theseqlistafterinsertis:

\n");

for(i=0;i<=L->last;i++)

printf("%d\n",L->data[i]);

}

printf("pleaseinputthenumbertodelete:

b=\n");

scanf("%d",&b);

if(Delete_seqlist(L,b))

{

printf("Theseqlistafterdeletionis:

\n");

for(i=0;i<=L->last;i++)

printf("%d\n",L->data[i]);

}

}

3.单链表

#include

#include

#defineNULL0

#defineSLNODEstructnode

SLNODE

{

intdata;

SLNODE*next;

};

intDel_LinkList(SLNODE*h,inti)

{

SLNODE*p,*s;

intj;

p=h;

j=0;

while(p->next!

=NULL&&j

{

p=p->next;

j++;

}

if(j!

=i-1)

{

printf("iisinvalid!

\n");

return0;

}

else

{

if(p->next==NULL)

{

printf("idoesnotexist!

\n");

return(0);

}

else

{

s=p->next;

p->next=s->next;

free(s);

return

(1);

}

}

}

SLNODE*CREATE_SL(SLNODE*h)

{

SLNODE*p,*s;

intx;

h=(SLNODE*)malloc(sizeof(SLNODE));

p=h;

h->next=NULL;

printf("pleaseinputelement:

\n");

scanf("%d",&x);

while(x!

=-1)

{

s=(SLNODE*)malloc(sizeof(SLNODE));

s->data=x;

if(h->next==NULL)

h->next=s;

else

p->next=s;

p=s;

scanf("%d",&x);

}

p->next=NULL;

returnh;

}

voidmain()

{

SLNODE*h,*p;

inti;

h=CREATE_SL(h);

printf("Theoriginallinklistis:

\n");

for(p=h->next;p!

=NULL;p=p->next)

printf("%d\n",p->data);

printf("pleaseinputthenumderitodelet:

i=\n");

scanf("%d",&i);

if(Del_LinkList(h,i))

{

printf("Thelinklistaferdeletionis:

\n");

for(p=h->next;p!

=NULL;p=p->next)

printf("%d\n",p->data);

}

}

 

4.顺序栈

#include

#include

#definemaxsize1024

typedefstructstack

{

intdata[maxsize];

inttop;

}sqstack;

sqstack*init_seqstack()

{

sqstack*s;

s=(sqstack*)malloc(sizeof(sqstack));

s->top=-1;

returns;

}

intPop_seqstack(sqstack*s,intx)

{

if(s->top==-1)

return0;

else

{

x=s->data[s->top];

s->top--;

return1;

}

}

intTop_seqstack(sqstack*s)

{

if(s->top==-1)

return0;

else

return(s->data[s->top]);

}

intPush_seqstack(sqstack*s,intx)

{

if(s->top==maxsize-1)

return0;

else

{

s->top++;

s->data[s->top]=x;

return

(1);

}

}

voidmain()

{

inta;

intb;

sqstack*s;

s=init_seqstack();

printf("pleaseinputtheelementofseqstacks:

a=\n");

scanf("%d",&a);

while(a!

=-1)

{

if(Push_seqstack(s,a))

scanf("%d",&a);

}

printf("Thetopelementafterpushis:

\n");

printf("%d\n",Top_seqstack(s));

if(Pop_seqstack(s,b))

{

printf("Thetopelementafterpopis:

\n");

printf("%d\n",Top_seqstack(s));

}

}

5.链栈

#include

#include

#defineLinkstackstructlinkstack

#defineNULL0

intb;

Linkstack

{

intdata;

Linkstack*next;

};

Linkstack*init_Linkstack()

{

Linkstack*top;

top=(Linkstack*)malloc(sizeof(Linkstack));

top=NULL;

returntop;

}

Linkstack*Push_Linkstack(Linkstack*top,intx)

{

Linkstack*s;

s=(Linkstack*)malloc(sizeof(Linkstack));

s->data=x;

s->next=top;

top=s;

returntop;

}

Linkstack*Pop_Linkstack(Linkstack*top)

{

Linkstack*p;

if(top==NULL)

returnNULL;

else

{

b=top->data;

p=top;

top=top->next;

free(p);

returntop;

}

}

voidmain()

{

Linkstack*top,*q;

inta;

top=init_Linkstack();

printf("pleaseinputtheelementofthelinkstack:

a=\n");

scanf("%d",&a);

while(a!

=-1)

{

top=Push_Linkstack(top,a);

scanf("%d",&a);

}

q=top;

printf("theoriginallinkstackis:

\n");

while(q!

=NULL)

{

printf("%d\n",q->data);

q=q->next;

}

top=Pop_Linkstack(top);

printf("thetopofthelinkstackis:

%d\n",b);

printf("thelinkstackafterpopis:

\n");

q=top;

while(q!

=NULL)

{

printf("%d\n",q->data);

q=q->next;

}

}

6.顺序队

#include

#include

#defineMaxSize1024

typedefstructc_queue

{

intdata[MaxSize];

intfront,rear;

intnum;

}c_SeQueue;

c_SeQueue*init_SeQueue()

{

c_SeQueue*q;

q=(c_SeQueue*)malloc(sizeof(c_SeQueue));

q->front=q->rear=MaxSize-1;

q->num=0;

returnq;

}

intin_SeQueue(c_SeQueue*q,intx)

{

if(q->num==MaxSize)

{

printf("TheQueueisfull!

\n");

return(-1);

}

else

{

q->rear=(q->rear+1)%MaxSize;

q->data[q->rear]=x;

q->num++;

return1;

}

}

intout_SeQueue(c_SeQueue*q)

{

if(q->num==0)

{

printf("TheQueueisempty!

\n");

return-1;

}

else

{

q->front=(q->front+1)%MaxSize;

printf("Theelementtooutis:

%d\n",q->data[q->front]);

q->num--;

return

(1);

}

}

voidmain()

{

c_SeQueue*q;

ints;

inti,a;

q=init_SeQueue();

printf("Pleaseinputthenumbertoin_SeQueue:

\n");

scanf("%d",&a);

while(a!

=-1)

{

if(in_SeQueue(q,a))

scanf("%d",&a);

}

printf("TheoriginalSeQueueis:

\n");

s=q->front+1;

for(i=0;inum;i++)

printf("%d\t",q->data[(s++)%MaxSize]);

printf("\n");

if(out_SeQueue(q))

printf("TheSeQueueafterout_Sequeueis:

\n");

s=q->front+1;

for(i=0;inum;i++)

printf("%d\t",q->data[(s++)%MaxSize]);

printf("\n");

}

7.链队

#include

#include

#defineNULL0

#defineQNODEstructQNode

intx;

QNODE

{

intdata;

QNODE*next;

};

typedefstructlinkqueue

{

QNODE*front,*rear;

}LinkQueue;

LinkQueue*init_LQueue()

{

LinkQueue*q;

QNODE*p;

q=(LinkQueue*)malloc(sizeof(LinkQueue));

p=(QNODE*)malloc(sizeof(QNODE));

p->next=NULL;

q->front=q->rear=p;

returnq;

}

voidin_LQueue(LinkQueue*q,intx)

{

QNODE*p;

p=(QNODE*)malloc(sizeof(QNODE));

p->data=x;

p->next=NULL;

q->rear->next=p;

q->rear=p;

}

intIsEmpty(LinkQueue*q)

{

if(q->front==q->rear)

return1;

else

return0;

}

intout_LQueue(LinkQueue*q)

{

QNODE*p;

if(IsEmpty(q))

{

printf("thequeueisempty!

");

return(0);

}

else

{

p=q->front->next;

q->front->next=p->next;

x=p->data;

free(p);

if(q->front->next==NULL)

q->rear=q->front;

return1;

}

}

voidmain()

{

LinkQueue*q;

QNODE*s;

q=init_LQueue();

inta;

printf("Pleaseinputlinklistq:

\n");

scanf("%d",&a);

while(a!

=-1)

{

in_LQueue(q,a);

scanf("%d",&a);

}

printf("Theoriginallinkqueueis:

\n");

s=q->front->next;

while(s!

=q->rear->next)

{

printf("%d\t",s->data);

s=s->next;

}

printf("\n");

if(out_LQueue(q))

{

printf("Theoutedelementis:

%d\n",x);

printf("Thelinkqueueafteroutqueueis:

\n");

s=q->front->next;

while(s!

=q->rear->next)

{

printf("%d\t",s->data);

s=s->next;

}

printf("\n");

}

}

8.二叉树

#include

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1