软件基础作业1顺序表

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、实验目的和要求

1、验证顺序表及其基本操作的实现;

2、掌握线性表的基本操作:查找、插入、删除等运算在顺序存储结构上的运算。

3、上机前写好算法草稿,程序中要有合适的输入输出提示语句。

4、记录运行结果,记录调试过程中遇到的问题及解决办法。

二、主要实验仪器和设备

计算机、vc++6.0

三、本次实验内容

1.写出在顺序存储结构下逆转线性表的算法,要求使用最少的附加空间。

(1)算法说明:此题只需将线性表中第一个和最后一个、第二个和倒数第二个……通过第三个变量交换即可。

(2)程序清单:

#include

void crt_sq_list(int v[],int n)

{ int i;

printf("input %d data:\n",n);

for(i=0;i

scanf("%d",&v[i]);

}

void nz_sq_list(int a[],int n)

{ int i,t;

for(i=0;i

{t=a[i];

a[i]=a[n-i-1];

a[n-i-1]=t;

}

return;

}

void main()

{ int i,a[10];

crt_sq_list(a,10);

printf("逆转前:\n");

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

printf("%d\t",a[i]);

nz_sq_list(a,10);

printf("\n逆转后:\n");

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

printf("%d\t",a[i]);

}

(3)运行结果

(4)分析与思考:这一题比较简单,只调试了一次就成功了,没有出现什么问题。

2. 设A(a1,a2,...,an)和B(b1,b2,...,bn)为两个有序序列,若n=m,且

ai=bi(1≤i≤n), 则称A=B;若ai=bi(1≤iB,写出比较A,B的算法,输出-1,0,1。

(1)算法说明:此题我的思路是将“if”语句与“return”语句结合起来使用。若n>m,则必定是 A>B,跳出cp_sq_list函数,否则即n>=m,接着往下执行。从第一个起依次比较A与B中元素的大小并用累加器s记录A与B中相等元素的个数,一旦出现A中元素比B中元素大的情况则可判定A>B,跳出cp_sq_list函数,否则即A 中所有元素均小于等于B中元素,接着往下执行。如果A与B中相等元素的个数等于A中元素的个数且等于B中元素的个数,则可判定A=B,否则A

(2)程序清单:

#include

void crt_sq_list(int v[],int n)

{ int i;

printf("input %d data:\n",n);

for(i=0;i

scanf("%d",&v[i]);

}

int cp_sq_list(int a[],int n,int b[],int m)

{ int i,s=0;

if(n>m)

return 1;

for(i=0;i

{if(a[i]>b[i])

return 1;

if(s==n&&n==m)

return 0;

return -1;

}

void main()

{ int i,n,m,a[10],b[10];

printf("请输入a表长度(最多为10):\n"); scanf("%d",&n);

printf("请输入a中数据:\n");

crt_sq_list(a,n);

printf("请输入b表长度(最多为10):\n"); scanf("%d",&m);

printf("请输入b中数据:\n");

crt_sq_list(b,m);

i=cp_sq_list(a,n,b,m);

if(i==-1)

printf("A

else if(i==0)

printf("A=B\n");

else

printf("A>B\n");

}

(3)运行结果

(4)分析与思考:这一提也是一次调试就成功了。对于这一题,我对比了一下与其他人的算法,觉得我这种思路要简洁的多,他们多采用很多的“if”语句来逐一的进行条件判定得出结论,无论从空间还是时间角度都复杂得很。

3、建立一个含有若干个(10个整型数)元素的顺序表;对该顺序表中依次在第0个元素前插入一个数115,在第4个元素前插入225,在第12个数前插入335,然后输出该顺序表;查找值为x(从键盘输入)的元素,并删除,然后输出该顺序表。(1)算法说明:这一题应该算是基础题,考察线性表的各种基本运算。首先是建表,接着调用ins_sq_list函数进行插入运算。接着调用find_sq_list函数查出待查数在线性表中的位置,再调用del_sq_list函数将其删除。

(2)程序清单:

#include

void crt_sq_list(int v[],int n)

{ int i;

相关文档
最新文档