JSP实验指导书.docx

上传人:b****2 文档编号:1931144 上传时间:2023-05-02 格式:DOCX 页数:13 大小:19.29KB
下载 相关 举报
JSP实验指导书.docx_第1页
第1页 / 共13页
JSP实验指导书.docx_第2页
第2页 / 共13页
JSP实验指导书.docx_第3页
第3页 / 共13页
JSP实验指导书.docx_第4页
第4页 / 共13页
JSP实验指导书.docx_第5页
第5页 / 共13页
JSP实验指导书.docx_第6页
第6页 / 共13页
JSP实验指导书.docx_第7页
第7页 / 共13页
JSP实验指导书.docx_第8页
第8页 / 共13页
JSP实验指导书.docx_第9页
第9页 / 共13页
JSP实验指导书.docx_第10页
第10页 / 共13页
JSP实验指导书.docx_第11页
第11页 / 共13页
JSP实验指导书.docx_第12页
第12页 / 共13页
JSP实验指导书.docx_第13页
第13页 / 共13页
亲,该文档总共13页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

JSP实验指导书.docx

《JSP实验指导书.docx》由会员分享,可在线阅读,更多相关《JSP实验指导书.docx(13页珍藏版)》请在冰点文库上搜索。

JSP实验指导书.docx

JSP实验指导书

数据结构实验指导书

适用专业:

网络工程学院

指导教师:

王翔

实验一:

线性表的基本操作

实验目的:

掌握线性表的基本操作:

插入、删除、查找以及线性表合并等运算在顺序存储结构的运算。

能从实际问题中抽象出线性表结构及其运算的模型

实验课时:

4课时

实验要求:

1.掌握线性表的顺序存储的基本运算的算法

2.掌握线性表链式存储的基本运算的算法

3.根据算法写出对应程序(使用TC,或C++完成程序)

4.调试成功,并保存程序源代码,以备检查

实验内容:

1.设计——实现用户通过键盘输入一组数,并输入一个需要插入的数,和插入的位置,完成整个插入。

例,输入1,2,3,4再输入5,3。

最后程序运行结果为1,2,5,3,4。

1)先写出完成该操作的算法

2)以程序方式实现算法

3)数的长短自行定义,可以用数组存储。

4)若有能力的同学,可以考虑用链表如何完成该项操作

5)该设计最后以实验报告的形式提交

2.验证——上机实现链表的基本操作程序,并结合对应的算法,了解链表的工作情况。

#include

#include"malloc.h"

#include"conio.h"

structmylist

{intdata;

structmylist*next;

};

structmylist*createlist(void)

{intx;

structmylist*s,*q,*h;

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

h->next=NULL;

q=h;

printf("inputnumber:

");

scanf("%d",&x);

while(x!

=0)

{

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

s->data=x;

q->next=s;

printf("inputthenumber:

");

scanf("%d",&x);

s->next=NULL;

q=s;

}

return(h);

}

intputlist(structmylist*head)

{inti=0;

if(head->next==NULL)

{return0;}

while(head->next!

=NULL)

{i++;

printf("the%dnumberinlistis:

%d\n",i,head->next->data);

head=head->next;

}

return1;

}

voidmain()

{structmylist*my,*temp;

my=createlist();

if(putlist(my)==0)

printf("theinputlistisempty!

");

while(my->next!

=NULL)

{temp=my;

my=my->next;

free(temp);

}

printf("over,pressanykeytoend");

getch();

}

3.验证——上机实现一元多项式的加法程序,并结合算法理解链表的工作过程和基本操作的实现。

#include

#include

#include

#define LEN sizeof(node)

typedefstructpolynode  /*用单链表存储多项式的结点结构*/

{

     intcoef; /*多项式的系数*/

     intexp;  /*指数*/

     structpolynode*next;/*next是structpolynode类型中的一个成员,它又指向

                        structpolynode类型的数据,以此建立链表*/

}node;/*若定为"node,*list;",意即node*与list同为结构指针类型*/

node*create(void) /*指针函数,返回指针类型;用尾插法建立一元多项式的链表的函数*/

{

    node*h,*r,*s;

    intc,e;

    h=(node*)malloc(LEN); /*建立多项式的头结点,为头结点分配存储空间*/

    r=h;/*r指针始终动态指向链表的当前表尾,以便于做尾插入,其初值指向头结点*/

    printf("coef:

");

    scanf("%d",&c);/*输入系数*/

    printf("exp:

");

    scanf("%d",&e);/*输入指针*/

    while(c!

=0) /*输入系数为0时,表示多项式的输入结束*/

   {

         s=(node*)malloc(LEN);/*申请新结点*/

         s->coef=c; /*申请新结点后赋值*/

         s->exp=e;  /*申请新结点后赋值*/

         r->next=s;/*做尾插,插入新结点*/

         r=s; /*r始终指向单链表的表尾*/

         printf("coef:

");

         scanf("%d",&c);

         printf("exp:

");

         scanf("%d",&e);

   }

   r->next=NULL;/*将表的最后一个结点的next置NULL,以示表结束*/

   return(h);

}

voidpolyadd(node*polya,node*polyb)/*一元多项式相加函数,用于将两个多项式相加,然后将和多项式存放在多项式polya中,并将多项式ployb删除*/

{

      node*p,*q,*pre,*temp;

      intsum;

      p=polya->next;/*令p和q分别指向polya和polyb多项式链表中的第一个结点*/

      q=polyb->next;

      pre=polya;   /*位置指针,指向和多项式polya*/

      while(p!

=NULL&&q!

=NULL)/*当两个多项式均未扫描结束时,执行以下操作*/

     {

           if(p->expexp)          /*若p指向的多项式指数小于q指的指数*/

           {

                  pre->next=p;     /*将p结点加入到和多项式中*/

                  pre=pre->next;

                  p=p->next;

           }

           elseif(p->exp==q->exp)   /*若指数相等,则相应的系数相加*/

           {

                  sum=p->coef+q->coef;

                  if(sum!

=0)

                  {

                       p->coef=sum;

                       pre->next=p;pre=pre->next;p=p->next;

                       temp=q;q=q->next;free(temp);

                   }

                 else    /*如果系数和为零,则删除结点p与q,并将指针指向下一个结点*/

                {

                      temp=p->next;free(p);p=temp;

                      temp=q->next;free(q);q=temp;

                }

          }

         else                     /*若p指数大于q指数*/

         {

                pre->next=q; /*p结点不动,将q结点加入到和多项式中*/

                pre=pre->next;

               q=q->next;

          }

   }

   if(p!

=NULL) /*多项式A中还有剩余,则将剩余的结点加入到和多项式中*/

          pre->next=p;

   else       /*否则将B的结点加入到和多项式中*/

          pre->next=q;                                                        

}

voidprint(node*p)/*输出函数,打印出一元多项式*/

{                                                                                                     

   while(p->next!

=NULL)

   {  

       p=p->next;

       printf("    %d*x^%d",p->coef,p->exp);  

          

   }

}  

main()      /*主函数*/

{

     node*polya,*polyb;

     printf("Welcometouse!

\n");

     printf("\nPleaseinputtheployaincludecoef&&exp:

\n");

      polya=create(); /*调用建立链表函数,创建多项式A*/

     print(polya);

     printf("\nPleaseinputtheploybincludecoef&&exp:

\n");

     polyb=create(); /*同理,创建B*/

     print(polyb);

     printf("\nSumofthepolyis:

\n");

     polyadd(polya,polyb);   /*调用一元多项式相加函数*/

     print(polya);           /*调用输出函数,打印结果*/

     printf("\n");

}

4.设计——(选做)以程序形式实现A=A∪B的运算

1)可以以顺序存储来实现,也可以用链表实现

2)自己给定A、B的值

3)完成者提交实验报告,可作为加分的依据。

实验二约瑟夫问题

实验目的:

掌握线性表的运用——约瑟夫环模型,能运用该模型进行问题的解决。

实验课时:

4课时

实验要求:

1.掌握线性表的基本操作算法

2.掌握约瑟夫环的基本模型过程

3.能以程序方式实现约瑟夫环的问题

4.调试成功,并保存程序源代码,以备检查

实验内容:

1.完成一个约瑟夫问题的通用算法

2.设计——将该算法以程序实现

1)可以以链表实现,也可以以数组实现

2)已知条件可自行定义(可以将程序定义为20个人的圈子中,报数为3的人退出,也可以完成一个通用的程序)

3)完成程序提交实验报告(包括算法和程序)

3.设计——(选做)给出更进一步的约瑟夫环的算法:

编号为12,……n的n个人按顺时针方向围成一圈,每人持有一个密码(正整数),一开始任选一个正整数作为报数上限值m,从第一个人开始按顺序时针方向自1开始顺序报数,报道m时停止报数,报m的人处列将他的密码作为新的m值,从他在顺时针方向上的下一个人开始重新从1报数,如此下去,直至所有人全部出列为止。

利用单向循环链表存储结构模拟此过程,按照出列的顺序印出各人的编号。

 

实验三栈和队列的应用

实验目的:

掌握栈和队列的特点,熟悉栈和队列的基本操作,能从实际问题中抽象栈和队列的模型。

能运用栈和队列的不同特点解决实际的问题。

实验课时:

4课时

实验要求:

1.掌握栈和队列的存储形式

2.掌握栈和队列的基本特点和基本运算的算法

3.根据算法写出对应程序(使用TC,或C++完成程序)

4.能够从实际问题中抽象出合适的对象模型

5.调试成功,并保存程序源代码,以备检查

实验内容:

1.完成将一个10进制正整数变为8进制的程序

1)先写出对应算法

2)写出完整程序,用栈的形式来完成

2.实现判断回文的程序运算

1)回文的含义是回文就是正读、反读均相同的字符序列如:

abba,abcba;

2)解决问题的方法有很多,写出其中任一种算法

3)上机实现这种算法,并提交实验报告

3.验证队列数据的存取程序,从程序中了解队列的特点以及基本操作

#include

#definemaxsize10

Intqueue[maxsize];

Intfront=-1;

Intrear=-1;

/*---------------------*/

输入队列数据

/*---------------------*/

Voidaddqueue(intvalue)

{

If(rear>=maxsize)

Printf(“thequeueisfull”);

Else

{rear++;

Queue[rear]=value;

}

}

/*---------------------*/

输出队列数据

/*---------------------*/

Intdelqueue()

{

Inttemp;

If(front==rear)

Return-1;

Else

{

Front++;

Temp=queue[front];

Queue[front]=0;

Returntemp;

}

}

/*---------------------*/

主程序

/*---------------------*/

Voidmain()

{

For(i=0;i<=maxsize;i++);

Queue[i]=0;

Printf(“pleaseinputtheinputvalue”);

Scanf(“%d”,&temp);

Addqueue(temp);

Printf(“thecontentofqueue:

”);

For(i=0;i<=maxsize;i++)

{

If(queue[i]!

=0)

Printf(“%d”,queue[i]);

}

If((temp=delqueue())==-1)

Printf(“thequeueisempty\n”);

Else

{

For(i=0;i<=maxsize;i++)

{

If(queue[i]!

=0)

Printf(“[%d]”,queue[i]);

}

}

}

4(选做)以程序实现完成循环队列的插入删除操作

实验四串的应用

实验目的:

熟悉串的基本操作和具体操作过程

实验课时:

4课时

实验要求:

1.掌握串的基本操作过程、步骤

2.掌握串的操作的实现过程,有些串函数能自行编写

3.先写出算法,再根据算法写出对应程序(使用TC,或C++完成程序)

4.调试成功,并保存程序源代码,以备检查

实验内容:

1.编写一程序,实现从字符串s中,返回第I个字符开始,长度为len的子串(s,I,len都可以从键盘输入)

要求:

写出算法,再以程序实现,最后递交实验报告。

2.完成两个字符串连接的操作(不要使用函数)。

3.巩固前面线性表、栈、队列的知识

实验五查找

实验目的:

掌握各种查找方法的过程和算法,能对不同的情况采用不同的查找方法,分析各种方法的性能。

实验课时:

4课时

实验要求:

1.掌握各种查找算法及查找过程、实现的时间复杂度

2.能将各种查找算法以程序实现,并在程序中能看到查找的次数

3.写出对应程序(使用TC,或C++完成程序)

4.调试成功,并保存程序源代码,以备检查

实验内容:

1.已知一个有序序列,先要求插入一个元素,使其序列仍然有序。

1)序列的长短可预先设置

2)插入的元素由键盘输入

3)插入的方法可以使用顺序插入,也可以使用折半插入(最好使用折半插入)

4)完成该程序、递交实验报告

2.(选做)将课本上讲过的其他算法,试着写成程序运行成功。

实验六排序

实验目的:

掌握多种排序的方式方法,了解各种方法的算法表示,以及性能分析和适用场合。

实验课时:

4课时

实验要求:

1.掌握各种排序的方法和过程

2.了解各种排序方法的性能分析,找到合适的场合下使用

3.把排序方法转化为程序实现

4.调试成功,并保存程序源代码,以备检查

实验内容

1.用“选择法”对10个整数进行排序

1)先写出对应算法

2)根据你所写的算法,写出完整程序。

3)该设计最后递交实验报告(1、2两题任一题提交实验报告)

2.完成用“冒泡法对输入的10个字符从小到大排序

1)先写出对应算法(从头找到尾,或是从尾找到头)

2)可以考虑在程序中显示查找该数所比较的次数。

(选做)

3)根据你所写的算法,写出完整程序。

4)该设计最后递交实验报告(1、2两题任一题提交实验报告)

3.(选做)选择书上的其他排序算法,以程序方式实现

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

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2