题目:顺序表相关算法的实验验证
[实验目的]
验证线性表的顺序存储及其上的基本操作;顺序表的封装;
[实验内容及要求]
1、定义顺序存储的线性表类。
2、实验验证如下算法的正确性、各种功能及指标:
1)创建可容纳M 个结点的顺序表,(M?10);
2)在顺序表中第k 个结点后插入一个新结点;
3)存取顺序表中第k 个结点的值;
4)删除顺序表中第k 个结点;
5)顺序查找值为x 的元素在顺序表中的位置(下标)。
3、为便于观察程序的运行结果,设计输出函以图形或表格或其它直观的形式展现、存储计算结果。
4、测试程序时,对所有输入变量取遍各种有代表性的值。
//LinearList.h
//LinearList.cpp
[实验目的]
验证线性表的顺序存储及其上的基本操作;顺序表的封装;
[实验内容及要求]
1、定义顺序存储的线性表类。
2、实验验证如下算法的正确性、各种功能及指标:
1)创建可容纳M 个结点的顺序表,(M?10);
2)在顺序表中第k 个结点后插入一个新结点;
3)存取顺序表中第k 个结点的值;
4)删除顺序表中第k 个结点;
5)顺序查找值为x 的元素在顺序表中的位置(下标)。
3、为便于观察程序的运行结果,设计输出函以图形或表格或其它直观的形式展现、存储计算结果。
4、测试程序时,对所有输入变量取遍各种有代表性的值。
5、为了增强程序的可读性,程序中要有适当的注释。
//main.cpp
#include<iostream>
#include"LinearList.h"
#include<windows.h>
#include<conio.h>
using namespace std;
int main()
{
LinearList list(100);
int item=0,temp=0;
cout<<"please input 12 data!"<<endl;
for(int i=0;i<12;i++)
{
cin>>temp;
list.Insert(i,temp);
}
cout<<endl;
system("cls");
cout<<"所存储的线性表是:"<<"\n\n\n";
list.print();
cout<<"存取第3个节点的值:"<<"\n\n\n";
list.Read(3,item);
cout<<"第三个节点的值是:"<<item<<"\n\n\n\n";
cout<<"按任意键继续.........";
getch();
system("cls");
cout<<"删除第四个节点:"<<"\n\n";
cout<<"删除前的线性表是:"<<"\n\n\n";
list.print();
list.Delete(4,item);
cout<<"第四个节点的值是:"<<item<<"\n\n";
cout<<"删除后的线性表是:"<<"\n\n\n";
list.print();
cout<<"按任意键继续.........";
getch();
system("cls");
cout<<"在第五个节点后面插入一个值为8的节点:"<<"\n\n";
cout<<"插入前的线性表是:"<<"\n\n\n";
list.print();
item=8;
list.Insert(5,item);
cout<<"插入后的线性表是:"<<"\n\n\n";
list.print();
cout<<"按任意键继续.........";
getch();
system("cls");
cout<<"所存储的线性表是:"<<"\n\n\n";
cout<<"查找值为8的元素的下标:"<<"\n\n\n";
list.print();
int array[30]={0};
item=8;
list.Search(item,array);
cout<<"其下标分别为 :";
for(int i=0;i<30;i++)
if(array[i]!=0)
cout<<" ["<<array[i]<<"] ";
return 0;
}
//LinearList.h
#ifndef LINEARLIST_H
#define LINEARLIST_H
class LinearList
{
private:
int length;
int MaxSize;
int*element;
public:
LinearList(int MaxListSize);
~LinearList() {delete [] element;};
int Getsize() {return length;};
int Getelement(const int k) {return element[k];};
bool Insert(int k,const int & item);//第k个节点后插入新节点,值为item
bool Read(int k,int & item);//存取第k个节点的值
bool Delete(int k,int & item);//删除第k个节点
int Search(int & item,int (&array)[30]);//查找值为item的元素的位置,并将所有位置下标返回
bool IsEmpty() {return length==0;};
bool IsFull() {return length==MaxSize;};
void print(void);
};
#endif
//LinearList.cpp
#include<iostream>
using namespace std;
#include"LinearList.h"
LinearList::LinearList(int MaxListSize)
{
MaxSize=MaxListSize;
element=new int[MaxSize];
length=0;
}
bool LinearList::Insert(int k,const int & item)
{
if(IsFull())
{
cout<<"Inserting into a full list!"<<endl;
return false;
}
if(k<0||k>length)
{
cout<<"The node is not exist!"<<endl;
return false;
}
for(int i=length;i>k;i--)
element[i]=element[i-1];
element[k]=item;
length++;
}
bool LinearList::Read(int k,int & item)
{
if(IsEmpty())
{
cout<<"The list is Empty!"<<endl;
return false;
}
if(k<0||k>length)
return false;
item=element[k-1];
return true;
}
bool LinearList::Delete(int k,int & item)
{
if(IsEmpty())
{
cout<<"Deleteing from an empty list!"<<endl;
return false;
}
item=element[k-1];
for(int i=k;i<length;i++)
element[i-1]=element[i];
length--;
}
int LinearList::Search(int & item,int (&array)[30])
{
for(int i=0;i<length;i++)
if(element[i]==item)
array[i]=i;
return 0;
}
void LinearList::print(void)
{
cout<<"*****************************************"<<endl;
for(int i=0;i<length;i++)
cout<<"*"<<element[i]<<"*";
cout<<"\n*****************************************\n\n"<<endl;
}