实验一 算法转换为程序

  • 格式:doc
  • 大小:53.50 KB
  • 文档页数:6

1 实验报告

2010 – 2011 学年第 2 学期 任课老师:

课程名称 《算法与数据结构》课程实验指导

班级 座号 姓名

实验题目 实验一 算法转换为程序 实验时间 实验日期: 9---22

提交日期: 9—23

实验目的、要求

一、实验目的

1.掌握如何将算法转换为程序;

2.熟悉顺序存储结构;

3.熟悉顺序表的操作;

4.熟悉顺序表的应用。

二、实验要求

1.每个同学必须独立完成;

2.程序中的开头部分必须对本程序的总体功能进行注释;程序中每个函数段必须要有注释说明该函数的功能或作用;

3.实验步骤中的1-4部分必须在每次上机之前完成,上机时进行调试和修改并填写实验报告;

4.实验报告中的源程序必须调试通过。

5.在体会中描述如下内容:

(1)对算法与程序的区别上的体会。

(2)本次实验过程的体会,是否自己独立完成?最大的困难是什么?自己准备如何解决这个困难?

(3)对本门课程的初步感觉,准备如何进行本门课程的学习。

6.提交实验报告(报告中包含源代码)、可直接运行的程序,程序运行界面要包括班级、座号和姓名,对每个输入的要求以及输出要有清晰的提示。

实验设计内容

(一)

1.使用内容的描述设计数据结构

/*顺序表*/

#indefine MAXSIZE 50

Tpedef int elemtype

typedef struct

{elemtype data[MAXSIZE];

Int len;/*序表的表长*/

}SeqList;

2.根据实验内容的描述设计算法

Void part(SeqList*L)

{int i,j;

dtatype x,y;

x=L->data[0];

for(i=1;i<=L-len-1;i++)

2 if(L->data[i];

{y=L->data[i];

For(j=i-1;j>=0;j--)

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

L->data[0]=y;

}

}

3.算法转化为程序

#include

#define MAXSIZE 50

Typedef int elemtype;

Typedef struct

{elemtype data[MAXSIZE];

Int len;/*顺序表中最后一个元素的序号*/

}SeqList;

/*创建顺序表*/

Void input(SeqList*L)

{int I,x;

I=0;

Printf(“\n输入顺序表中的元素值,-1结束:“);

Scanf(“%d”,&x);

While(x!=-1)

{L->data[i]=x;i++;

If(i==MAXSIZE)printf(“表空间已经满了“);

Else sanf(“%d”,&x);

}

L->len=I;

}

/*顺序表中元素以a1为界重新排列*/

Viod part(SeqList*L)

{ int i,j;

Elemtype x,y;

X=L->data[0];

For(i=1;i

If(L->data[i]

{y=L->data[i];

For(j=i-1;j>=0;j--)

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

L->data[0]=y;

}

}

/*输入顺序表*/

Void output(SeqList *L)

{int I;

3 Printf(“\n输入顺序表中的各个元素值:\n);

For(i=0;ilen-1;i++)

Printf(“%d”,L->data[i]);

}

/*主函数*/

Void main ()

{SeqList *)malloc(sizeof(SeqList));

Input(L);

Part(L);

Output(L);

Getch();

}

(二)算法

void ReverseList(Seqlist *L)

{

Datatype t;

int i;

for(i=0;ilength/2;i++)

{t=L->data[i];

L->data[i]=L->data[L->length-1-i];

l->data[L->LENGTH-1-I]=t;

}

}

1. 程序

#include

int main()

{

4 typedef struct Lnod

{

int data;

struct Lnod *next;

}Lnod,*Linklist;

Linklist p,m,n,r,L,a,b;

int i;

L=(Linklist)malloc(sizeof(Lnod)*5);

if(!L)exit(0);

L->next=NULL;

for(i=0;i<5;i++)

{

p=(Linklist)malloc(sizeof(Lnod));

if(!p)exit(0);

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

p->next=L->next;

L->next=p;

}

a=L->next;

printf("原来的链表中的元素为:\n");

while(a)

{

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

a=a->next;

}

printf("\n");

m=L->next;

n=m->next;

while(n->next)

{

r=n->next;

n->next=m;

m=n;

n=r;

}

n->next=m;

L->next->next=NULL;

L->next=n;

5

b=L->next;

printf("\n\n逆置之后链表中的元素为:\n");

while(b)

{

printf("%d, ",b->data);

b=b->next;

}

printf("\n");

return 0;

}

2.

二、 实验报告

根据实验内容要求写出相应的SQL语句,并记录实验过程中遇到的困难和解决问题的方法。

调试过程记录

实验结果记录以及与预期结果比较以及分析

输入数据:20 22 44 43 63 19 33

输出数据:33 19 63 43 44 22 20

输入数据和输出数据想同。

6

总结以及心得体会

刚刚开始总出现错误 ,经过多次修改终于成功。通过这次实验我发现我的C语言基础还不够好。以后要多多练习!还有对指针和函数这块还不够熟悉,应该好好努力!

教师评阅意见

教师: 年 月 日

填写内容时,可把表格扩大。实验的源程序代码(要有注释)附在表后。