一、实验目的
1、 熟练掌握线性表的结构特点,掌握顺序表的基本操作。
2、 巩固C++相关的程序设计方法与技术。
3、 学会使用顺序表解决实际问题。
二、实验内容
1、顺序表的建立与操作实现
建立n个元素的顺序表(n的大小和表里数据自己确定),实现相关的操作:输出,插入,删除,查找等功能。编写完整程序实现,程序语言不限定,使用技术形式不定。
三、实验步骤
1、依据实验内容分别说明实验程序中用到的数据类型的定义;
int 整形
四.实验报告
1、 顺序表的建立
void CreateList(SeqList *L,int n)
{ int i;
printf("please input n numbers:\n");
for(i=1;i<=n;i++)
scanf("%d",&L->elem[i]);
L->length=n;
}
2、 顺序表的插入
void InsertList(SeqList *L,int x,int i)
{int j;
if (i<1 ||i>L->length+1)
printf("no insert position!\n");
else
{for(j=L->length;j>=i;j--)
L->elem[j+1]=L->elem[j];
L->elem[i]=x;
L->length++;
}
3、 顺序表的删除
void DeleteList(SeqList *L,int i)
{int j;
if (i<1 ||i>L->length)
printf("no delete position!\n");
else
{for(j=i;j<=(L->length)-1;j++)
L->elem[j]=L->elem[j+1];
L->length--;
}
}
2、 顺序表的查找
int LocateList(SeqList *L,int x)
{int i;
i=1;
while (((L->elem[i])!=x)&&(i<=10))
++i;
if ((L->elem[i])==x) return(i);
else return(0);
}
3、完整程序;
#include <stdio.h>
#include <stdlib.h>
#define ListSize 100
typedef struct
{int elem[ListSize];
int length;
}SeqList;
void CreateList(SeqList *L,int n)
{int i;
printf("please input nnumbers:\n");
for(i=1;i<=n;i++)
scanf("%d",&L->elem[i]);
L->length=n;
}
void PrintList(SeqList *L,int n)
{int i;
printf("the sqlistis\n");
for(i=1;i<=n;i++)
printf("%d",L->elem[i]);
printf("\n");
}
int LocateList(SeqList *L,int x)
{int i;
i=1;
while (((L->elem[i])!=x)&&(i<=10))
++i;
if ((L->elem[i])==x) return(i);
else return(0);
}
void InsertList(SeqList *L,int x,int i)
{int j;
if (i<1 ||i>L->length+1)
printf("no insertposition!\n");
else
{for(j=L->length;j>=i;j--)
L->elem[j+1]=L->elem[j];
L->elem[i]=x;
L->length++;
}
}
void DeleteList(SeqList *L,int i)
{int j;
if (i<1 ||i>L->length)
printf("no deleteposition!\n");
else
{for(j=i;j<=(L->length)-1;j++)
L->elem[j]=L->elem[j+1];
L->length--;
}
}
void main()
{
SeqList L;
int i,x;
int n=10;
L.length=0;
CreateList(&L,n);
PrintList(&L,L.length);
printf("input the researchelement:");
scanf("%d",&x);
i=LocateList(&L,x);
printf("the researchposition is %d\n",i);
printf("input the positionof insert:");
scanf("%d",&i);
printf("input the value ofinsert:");
scanf("%d",&x);
InsertList(&L,x,i);
PrintList(&L,L.length);
printf("input the positionof delete:");
scanf("%d",&i);
DeleteList(&L,i);
PrintList(&L,L.length);
}
4、运行结果
5、总体收获、不足、疑问
这次实验报告得到了同学的大力帮助才得以完成,非常惭愧。尽管如此我还是收获不少的,在课上没弄懂的线性表结构通过实践得到了比较深刻的认识。了解了线性表的几个基本操作以及其原理,还强化了我差不多忘了的C++的能力。