实验报告。
课程: 数据结构班级:
实验序号: 1姓名:
学号: 实验日期: 9.15 题目: 顺序表的建立和运算
一、实验目的和要求
1)熟悉c语言的上机环境,进一步掌握c语言的结构特点。
2)掌握线性表的顺序存储结构的定义及基本运算。
二、实验环境。
windows7 ,vc
三、实验内容及实施。
实验内容。1、建立一个顺序表,输入n个元素并输出;
2、查找线性表中的最大元素并输出;
3、**性表的第i个元素前插入一个正整数x;
4、删除线性表中的第j个元素;
5、将线性表中的元素按升序排列;
*6、将线性表中的元素就地逆序(只允许用一个暂存单元);
程序流程图。
程序】定义顺序表:
#define maxsize 1024
typedef int elemtype; /线性表中存放整型元素 */
typedef struct
elemtype vec[maxsize];
int len顺序表的长度 */
}sequenlist;
源程序:#include
#include ""
#include <>
#define elemtype int //宏定义。
#define list_int_size 10 //改为1,改用listinsert增加空间。
using namespace std;
/定义一个顺序表。
struct sqlist
elemtype * elem;
int length;
int listsize;
l=;int initlist_sq(sqlist &l,int n=list_int_size)
*)malloc(n *sizeof(elemtype));
return 0;
int listinsert_sq(sqlist &l,int i,elemtype e)
int *p,*q;
p=最后一个位置。
q=要插入元素的位置。
for(;p>q;p--)
p=*(p-1);
q=e;return 1;
/删除顺序表中的元素。
int listdelete_sq(sqlist &l,int i,elemtype *e=0)
int *p;
p=定位到要删除的元素位置。
if(e)e=*p;//返回要删除元素的值。
for(;p<=
p=*(p+1);
return 1;
/要输入元素的线性表l,要输入的元素个数n
int listinput_sq(sqlist &l,int n)
int *p=
for(int i=0;i{
cin>>*p++)
return 1;
/顺序输出顺序表中的元素。
int listoutput_sq(sqlist &l)
int *p;
p=cout<<"顺序表中的元素为:";
for(int i=0;i<
cout<<*p++)
cout /查找最大元素。 int listmax_sq(sqlist &l,elemtype *e) int max; int *p; p=max=*p; for(int i=0;i< if(max<*p) max=*p; p++;最后溢出了会怎样? e=max; return 1; /升序排序。 int listsort_sq(sqlist &l) int tmp; int i,j; int *p; p=for(i=0;i< for(j=0;j< if(*(p+j)>*p+j+1)) tmp=*(p+j); (p+j)=*p+j+1); (p+j+1)=tmp; return 1; /逆序(不使用暂存空间) int listrevorder1_sq(sqlist &l) int *p; p=for(int i=0;i< *(p+i)=(p+ (p+(p+i)=(p+ return 1; /主函数。void main() int opt; / sqlist l; / 初始化。 int i,res,e,n; while(1) cout《请输入您要进行的操作的编号 **性表的第i个元素前插入一个正整数x" 将线性表中的元素就地逆序(不使用暂存单元)" switch (opt) case 1: cout《请输入要输入元素的个数 initlist_sq(l,n);/建立顺序表。 cout《请输入线性表元素 listoutput_sq(l);/输出顺序表中的元素。 break; case 2: listmax_sq(l,&e); cout<<"最大元素为:" case 3: cout<<"请分别输入要插入的元素和要插入元素的位置" cin>>e; cout<<"位置:"; cin>>i; listinsert_sq(l,i,e); listoutput_sq(l);/输出顺序表中的元素。 break; case 4: cout<<"请输入要删除的元素的位置" listdelete_sq(l,i,&res); cout<<"删除的元素为:" break; case 5: listsort_sq(l);/升序排序。 listoutput_sq(l);/输出顺序表中的元素。 break; case 6: listrevorder1_sq(l);/不使用暂存空间逆序。 listoutput_sq(l);/输出顺序表中的元素。 break; 四、实验结果 (程序的执行结果) 五、实验讨论。 对于main函数如何将调用函数连接起来一直不太熟悉,通过上网查找资料和自己的不断摸索,终于解决这个问题,想要把程序编好必须多练多实践。 define success 1 define failure 0 define maxsize 100 typedef int elemtype elemtype类型根据实际情况而定,这里假设为int typedefstruct elemtype data maxsize 数组,存储数据元素 in... 头文件。include include include 函数返回状态 define ok 1 define error 0 define true 1 define false 0 define infeasible 1 define overflow 2 运用动态分配的顺序存储结构。define ... 目录。实验目的 2 功能描述 2 输入描述 2 输出描述 2 程序分析 2 基本操作 2 主要算法分析 2 矩阵的构建 2 矩阵的加法 3 矩阵的减法 3 矩阵的乘法 4 算法的选择 5 程序运行过程 5 软件启动界面 5 加法运算 6 乘法运算 7 实验总结 8 用户手册 8 运行平台 8 系统要...数据结构顺序表
数据结构中顺序表的基本操作
数据结构实验 矩阵的运算