-
. z.
深 圳 大 学 实 验 报 告
课程名称: 数据构造实验与课程设计
实验工程名称: D: 数据构造——实验1——顺序表的循环移位
题目描述
顺序表的移位是循环移位,例如顺序表:1,2,3,4,5,6。如果左移1位,即原来的头元素移动到末尾,其它元素向左移1位,变成2,3,4,5,6,1。同理,如果右移1位,即原来的尾元素移动到头,其它元素向右移1位,变成6,1,2,3,4,5。以下是移位的多个例子:
-
. z.
原数据:1,2,3,4,5,6
左移3位:4,5,6,1,2,3,与原数据比照
右移4位:3,4,5,6,1,2,与原数据比照
请编写程序实现顺序表的循环移位操作
输入
第一行输入n表示顺序表包含的·n个数据
第二行输入n个数据,数据是小于100的正整数
第三行输入移动方向和移动的位数,左移方向为0,右移方向为1
第三行输入移动方向和移动的位数,左移方向为0,右移方向为1
输出
第一行输出创立后,顺序表内的所有数据,数据之间用空格隔开
-
. z.
第二行输出执行移位操作后,顺序表内的所有数据,数据之间用空格隔开
第三行输出执行移位操作后,顺序表内的所有数据,数据之间用空格隔开
如果发现输入的移动方向或位数不合法,不执行移位操作,输出error
样例输入
5
11 22 33 44 55
0 2
1 4
样例输出
11 22 33 44 55
33 44 55 11 22
44 55 11 22 33
-
. z.
实验步骤与过程:
思路:
顺序表类定义
、插入、删除、查找等功能的实现
源代码:
A:
*include<iostream>
using namespace std;
class List
{
private:
int *elem; //数组元素
int listsize; //顺序表最大长度
int length; //顺序表当前长度
public:
List(int size); //构造函数
-
. z.
~List(); //析构函数
int ListLength(); //获取顺序表的实际长度
int ListInsert(int i,int e); //插入一个元素
int ListDelete(int i); //删除一个元素,返回删除的元素
int GetElem(int i); //获取一个元素,返回元素值
};
List::List(int size) //构造函数
{
listsize=size;
length=0;
elem=new int[listsize];
}
List::~List() //析构函数
{
delete[]elem; //回收空间
}
int List::ListLength() //获取顺序表的实际长度
{
-
. z.
return length;
}
int List::ListInsert(int i,int e) //插入一个元素
{
if (length==listsize)
return 0; //顺序表已满
if (i<1 || i>length+1)
return 0; //i值不合法
if (i==length+1)
elem[length]=e;
else
for (int j=length;j>i-1;j--)
elem[j]=elem[j-1]; //位置i后面的元素全部后移一位
elem[i-1]=e;
length++;
return 1;
}
int List::ListDelete(int i) //删除一个元素,返回删除的元素
{
if (length==0)
-
. z.
return 0;
if (i<1 || i>length)
数据结构实验报告(实验一) 来自淘豆网m.daumloan.com转载请标明出处.