计算机软件技术基础实验一顺序表Word下载.docx

上传人:b****6 文档编号:17032310 上传时间:2022-11-28 格式:DOCX 页数:15 大小:92.88KB
下载 相关 举报
计算机软件技术基础实验一顺序表Word下载.docx_第1页
第1页 / 共15页
计算机软件技术基础实验一顺序表Word下载.docx_第2页
第2页 / 共15页
计算机软件技术基础实验一顺序表Word下载.docx_第3页
第3页 / 共15页
计算机软件技术基础实验一顺序表Word下载.docx_第4页
第4页 / 共15页
计算机软件技术基础实验一顺序表Word下载.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

计算机软件技术基础实验一顺序表Word下载.docx

《计算机软件技术基础实验一顺序表Word下载.docx》由会员分享,可在线阅读,更多相关《计算机软件技术基础实验一顺序表Word下载.docx(15页珍藏版)》请在冰豆网上搜索。

计算机软件技术基础实验一顺序表Word下载.docx

structSList

{intData[MAXSIZE];

intLast;

}SList;

2.函数设计

(1).函数名称:

初始化

①.名字:

InitSList

②.功能:

初始化线性表

③.入口参数:

L

④.出口参数:

⑤.N-S图

⑥.源程序清单

/*初始化线性表*/

structSListInitSList()

{structSListL;

L.Last=-1;

returnL;

}

/*初始化线性表1*/

structSListInitSList1()

{structSListL1;

L1.Last=-1;

returnL1;

/*初始化线性表2*/

structSListInitSList2()

{structSListL2;

L2.Last=-1;

returnL2;

/*初始化线性表3*/

structSListInitSList3()

{structSListL3;

L3.Last=-1;

returnL3;

(2).函数名称:

建立

InputSList

建立无序线性表

structSListInputSList(structSListL)

{intx=0;

printf("

\n请输入数据,结束输入-1!

\n"

);

scanf("

%d"

&

x);

while(x!

=-1)

{L.Data[++L.Last]=x;

if(L.Last==MAXSIZE-1)

{printf("

\n顺序表已满!

break;

}

scanf("

}

(3).函数名称:

建立1

InputSList1

建立有序线性表L1

L1,x

L1

/*建立有序线性表1*/

structSListInputSList1(structSListL1)

\n请按从小到大顺序输入数据,结束输入-1!

{if(L1.Last==-1)

L1.Data[++L1.Last]=x;

elseif(L1.Data[L1.Last]<

=x)

L1.Data[++L1.Last]=x;

else

printf("

\n请按从小到大顺序输入数据!

if(L1.Last==MAXSIZE-1)

}

/*建立有序线性表2*/

structSListInputSList2(structSListL2)

{if(L2.Last==-1)

L2.Data[++L2.Last]=x;

elseif(L2.Data[L2.Last]<

L2.Data[++L2.Last]=x;

if(L2.Last==MAXSIZE-1)

returnL2;

(4).函数名称:

输出

outputSList

输出顺序线性表数据L1

/*输出顺序线性表1数据*/

voidoutputSList(structSListL1)

{intj;

\n顺序表的数据为:

if(L1.Last!

=-1)

for(j=0;

j<

=L1.Last;

j++)printf("

%d"

L1.Data[j]);

elseprintf("

顺序表为空!

\n"

/*输出顺序线性表2数据*/

voidoutputSList2(structSListL2)

\n顺序表2的数据为:

if(L2.Last!

=L2.Last;

j++)printf("

L2.Data[j]);

elseprintf("

(5).函数名称:

插入

InsertSList1

向有序顺序线性表L1中插入数据x

structSListInsertSList1(structSListL1,intx)

{intj=0,i=0;

if(L1.Last==MAXSIZE-1)

{printf("

theList1isfull\n"

returnL1;

while(L1.Data[i]<

x&

&

i!

=L1.Last+1)

{i++;

for(j=L1.Last;

j>

=i;

j--)

L1.Data[j+1]=L1.Data[j];

L1.Data[i]=x;

L1.Last++;

(6).函数名称:

逆置

nizhi

将顺序表L1中的元素逆置

structSListnizhi(structSListL1)

{inti=0,j=L1.Last,k=0;

if(L1.Last<

1)

return(L1);

while(i<

j)

{k=L1.Data[i];

L1.Data[i]=L1.Data[j];

L1.Data[j]=k;

i++;

j--;

(7).函数名称:

删除

shanchu

删除有序顺序表L1中值相同的多余的元素

structSListshanchu(structSListL1)

{inti=0,j=0;

L1.Last)

{if(L1.Data[i]==L1.Data[i+1])

{for(j=i+2;

j++)

L1.Data[j-1]=L1.Data[j];

L1.Last--;

elsei++;

(8).函数名称:

合并

hebing

合并有序顺序表1、2到有序顺序表3中

L1、L2、L3

L3

structSListhebing(structSListL1,structSListL2,structSListL3)

{inti=0,j=0,k=0;

=L1.Last&

=L2.Last)

{if(L1.Data[i]<

L2.Data[j])

{L3.Data[k]=L1.Data[i];

i++;

k++;

}

else

{L3.Data[k]=L2.Data[j];

j++;

=L1.Last)

{L3.Data[k]=L1.Data[i];

k++;

i++;

while(j<

{L3.Data[k]=L2.Data[j];

j++;

L3.Last=k-1;

(9).函数名称:

主函数

main

/*主菜单*/

voidmainmenu()

{

|****************************************|\n"

|请输入选项编号(0-7)|\n"

|1--建立有序顺序表1|\n"

|2--在有序顺序表1中插入数据|\n"

|3--将有序顺序表1中元素逆置|\n"

|4--删除顺序表1中值相同的多余的元素|\n"

|5--建立无序顺序表|\n"

|6--建立有序顺序表2|\n"

|7--合并有序顺序表1.2到顺序表3中|\n"

|0--退出系统|\n"

/*主函数*/

voidmain()

structSListL1;

structSListL2;

structSListL3;

intx;

chari,choose;

do

{mainmenu();

choose=getch();

switch(choose)

{case'

1'

:

L1=InitSList();

//建立有序顺序表1

L1=InputSList1(L1);

outputSList(L1);

break;

case'

2'

printf("

请输入要插入的数据x:

"

//向有序顺序线性表1中插入数据x

scanf("

L1=InsertSList1(L1,x);

插入后"

3'

L1=nizhi(L1);

//将有序顺序表1中元素逆置

printf("

逆置后"

outputSList(L1);

case'

4'

L1=shanchu(L1);

//删除顺序表1中值相同的多余的元素

printf("

删除后"

outputSList(L1);

break;

5'

L=InitSList();

//建立无序顺序表

L=InputSList(L);

建立的无序顺序表为\n"

outputSList(L);

6'

L2=InitSList2();

//建立有序顺序表2

L2=InputSList2(L2);

outputSList(L2);

7'

L3=InitSList3();

//合并有序顺序表1.2

L3=hebing(L1,L2,L3);

printf("

合并后的顺序表3为"

outputSList(L3);

0'

exit(0);

//返回主菜单

default:

\n%c为非法选项!

请重新输入!

choose);

printf("

\n按0返回主菜单\n"

i=getch();

while(i=='

四.调试过程

1.问题名称:

逆置出错

问题现象:

例如输入1234,逆置后为4231

解决方法:

将逆置源程序中的if(i<

j)改为while(i<

2.问题名称:

逆置问题

逆置后无显示

将主函数中nizhi(L)改为nizhi(L1)

3.问题名称:

删除问题

例如有序顺序表1122,删除后为122

将if(i<

L1.Last)改为while(i<

4.问题名称:

合并问题

errorC2018:

unknowncharacter'

0xa3'

if后无分号

5.问题名称:

合并时将无序顺序表与有序顺序表2合并

将无序顺序表和有序顺序表1重新命名

6.问题名称:

插入问题

例如在有序顺序表1234中插入字母f后,显示-8589934601234

未解决

五.运行结果分析

1.运行界面

建立有序顺序表1

在有序顺序表1中插入数据

将有序顺序表1中元素逆置

删除顺序表1中值相同的多余的元素

建立无序顺序表

建立有序顺序表2

合并有序顺序表1.2到顺序表3中

2.测试结果

(1).将有序顺序表1中元素逆置

测试项

原始数据

输入

存在问题

空表

表长=5(奇数)

12345

54321

表长=6(偶数)

123456

654321

(2).删除顺序表1中值相同的多余的元素

有1组相同元素

12234

1234

有2组连续相同元素

122334

有2组以上不连续相同元素

11223344

(3).向有序顺序线性表1中插入数据x

2

表头

1

11234

表尾

4

12344

表中间

3

12334

位置非法

(4).合并有序顺序表1、2

1、2均为空表

1为空表,2非空

L2:

234

1非空,2为空表

L1:

123

123

1、2均非空

L2:

234

六.小结

通过本次实验,我们对顺序表这部分知识有了更加深入的了解与掌握。

在程序编译过程中,我们碰到了很多问题,有时会出现几十个错误,但我们还是一步步认真检查,有时不会的地方询问班里的其他同学,一起讨论,最终完整无误的改正了所有问题。

有时也有很低级的错误出现,说明我们的基础还不够牢固,还需要努力学习。

可能我们的报告中还存在着某些问题,程序也不够尽善尽美,但这次实验让我们都学到了很多,团队的合作,相互的帮助,都是完成一项任务中必不可少的。

我们也将尽我们最大的努力完成今后的每一次实验。

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

当前位置:首页 > 初中教育 > 政史地

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

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