min=j;
temp=a[i];
a[i]=a[min];
a[min]=temp;
}
}
3)程序调试
(1)运行程序,任意输入20个整数,查看并分析程序执行结果。
(2)把主函数中的函数调用select(M,a)改为select(M,&a[0]),用
(1)中使用的数据运行程序,查看并分析程序执行结果。
(3)把主函数中的函数调用select(M,a)改为select(M,a[0]),用
(1)中使用的数据运行程序,查看并分析程序执行结果。
(4)把主函数中的函数调用select(M,a)改为select(a,M),用
(1)中使用的数据运行程序,查看并分析程序执行结果。
实验7指针
一、实验目的
1.掌握指针变量的定义和基本使用方法。
2.熟悉指针和一维数组的关系,熟练使用指针变量访问一维数组元素。
3.熟练掌握用简单指针变量作函数的参数时函数的定义和调用方法。
4.明确数组名作函数的参数和指向数组的指针作函数的参数的异同,学会相关的函数定义和调用。
二、实验内容
1.用指针法在一维有序数组中插入数据
如下是具有10个整数的升序数列,存储在一维数组中,要求在其中插入任意一个整数后数列仍然有序。
数列:
10,20,30,40,50,60,70,80,90,99。
2.数据插入函数
编写在一维有序数组中插入数据的函数insert(),并调用该函数实现数据插入。
要求插入数据后的数组仍然有序。
三、实验指导
1.用指针法在一维有序数组中插入数据
1)编程分析
按照下标访问数组元素的方法,用指针解决该问题。
2)参考程序
#defineM10
#include“stdio.h”
voidmain()
{
inta[M+1]={10,20,30,40,50,60,70,80,90,99};
inti,n,*p,*q;
printf(“请输入要插入的数据:
\n”);
scanf(“%d”,&n);
a[M]=n;/*将要插入的数据放在数组的最后位置*/
for(p=a,i=0;i<=M;i++)/*确定要插入的位置p*/
if(n<=*(p+i))
{
p=p+i;/*p指向要插入的数据*/
break;
}
for(q=a+M-1;q>=p;q--)/*元素后移*/
*(q+1)=*q;
*p=n;/*插入数据*/
printf(“\n插入数据后的数列:
\n”);
for(p=a,i=0;i<=M;i++)
printf(“%d”,*(p+i));
}
2.数据插入函数
1)编程分析
(1)在实验内容1中,解决了用指针法在一维有序数组中插入数据的问题。
现只需对数据的插入处理部分函数化即可。
(2)插入函数insert()需要有三个形参:
第一个int型简单形参,表示要插入的数据;第二个int型简单形参,表示数组中数据的个数;第三个为int型指针形参,它将指向一个一维数组。
(3)在进行函数调用时insert()函数的第一个实参为要插入的数据:
第二个实参是数组数据个数;第三个实参是数组名,即数组首地址。
2)参考程序
#defineM10
#include“stdio.h”
voidinsert(int,int,int*);/*函数声明*/
voidmain()
{
inta[M+1]={10,20,30,40,50,60,70,80,90,99};
inti,x;
printf(“请输入要插入的数据:
\n”);
scanf(“%d”,&x);
insert(x,M,a);/*在有M个元素的一维数组a中插入x*/
printf(“\n插入数据后的数列:
\n”);
for(i=0;i<=M;i++)
printf(“%d”,a[i]);
}
voidinsert(intx,int,n,int*p)
{
int*t,*q,i;
t=p+n;/*将要插入的数据放在数组的最后位置*/
for(i=0;i<=n;i++)/*确定要插入的位置p*/
if(x<=*(p+i))
{
t=p+i;/*p指向要插入的数据*/
break;
}
for(q=p+n-1;q>=t;q--)/*元素后移*/
*(q+1)=*q;
*t=x;/*插入数据*/
}
实验8线性表的顺序存储系统维护
一、实验目的
1.掌握线性表的顺序存储的定义和基本使用方法。
2.掌握线性表的顺序存储存储单元的排列特点。
3.掌握线性表的顺序存储系统的建立、查找、修改、插入、删除操作,学会相关的函数定义和调用。
二、实验内容
1.建立一个顺序表。
2.能够对建立的顺序表进行查找、修改、插入、删除等操作。
当输入指令错误时,能够提示错误信息。
主函数中可以选择由switchcase语句构成主菜单,再根据提示进行相应操作。
3.使用C语言程序编写。
三、实验指导
1)编程分析
(1)在线性表的建立时,可直接用数组赋初值;
(2)在查找功能中要实现的功能为:
当能找到时该值时返回该值所在节点,找不到时返回-1;
(3)修改功能是在查找的基础上,将找到的值加以修改;
(4)在插入功能中要实现的功能为:
在找到指定节点后,当线性表满时,提示不能插入,当线性表不满时,插入数据;
(5)删除功能主要实现:
当线性表为空或者删除位置超出线性表长度时,都显示位置错误,其他情形进行删除操作。
2)参考程序
#include
#definemax20
intlast=20;
intnode[max]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19};
intf