类实现
#include <iostream>
using namespace std;
#define ok 0
#define error -1
class SeqList{
int *list;
int len;
int maxLen;
public:
SeqList(int n);
~SeqList();
};
SeqList::SeqList(int n) {
maxLen = 1000;
len = n;
list = new int[maxLen];
for(int i=0;i<n;i++)
cin>>list[i];
}
SeqList::~SeqList() {
delete []list;
}
创建、插入、删除、查找1个元素
#include <iostream>
using namespace std;
#define ok 0
#define error -1
class SeqList{
private:
int *list;
int size;
int maxsize;
public:
SeqList() {
maxsize = 1000;
size = 0;
list = new int[maxsize];
}
~SeqList() {
if(!list)
delete []list;
}
int list_size() {
return size;
}
int list_insert(int i, int item) {
if(i<1 || i>size+1)
return false;
int j = size;
for(j=size; j > i-1; j--)
list[j] = list[j-1];
list[j] = item;
size++;
return true;
}
int list_del(int i) {
if(i<1 || i > size)
return false;
int j;
for(j = i-1; j<size-1; j++)
list[j] = list[j+1];
size--;
return true;
}
int list_get(int i) {
if(i<1 || i>size)
return false;
cout<<list[i-1]<<endl;
return true;
}
void list_display() {
cout<<size<<" ";
for(int i=0; i<size; i++)
cout<<list[i]<<" ";
cout<<endl;
}
};
int main()
{
int n;
cin>>n;
SeqList mylist;
for(int i=1; i<=n; i++) {
int num;
cin>>num;
mylist.list_insert(i, num);
}
mylist.list_display();
int num, index;
int times = 2;
while(times--) {
cin>>index>>num;
if(!mylist.list_insert(index, num))
cout<<"error"<<endl;
else
mylist.list_display();
}
times = 2;
while(times--) {
cin>>index;
if(!mylist.list_del(index))
cout<<"error"<<endl;
else
mylist.list_display();
}
times = 2;
while(times--) {
cin>>index;
if(!mylist.list_get(index))
cout<<"error"<<endl;
}
return 0;
}
创建、插入、删除、查找多个元素
#include <iostream>
using namespace std;
class SeqList {
int* list;
int len;
int maxLen;
public:
SeqList(int n);
~SeqList();
void multiInsert(int i, int n, int* item); //n指插入元素的个数
void multiDel(int i, int n);
void outPut();
};
SeqList::SeqList(int n) {
maxLen = 1000;
len = n;
list = new int[maxLen];
for (int i = 0; i < n; i++)
cin >> list[i];
}
SeqList::~SeqList() {
delete[]list;
}
void SeqList::multiInsert(int i, int n, int* item) {
if (len + n > maxLen || i<1 || i>len + 1)
return;
for (int j = len - 1; j >= i - 1; j--)
list[j + n] = list[j];
for (int j = i - 1; j < i - 1 + n; j++)
list[j] = item[j - i + 1];
len += n;
}
void SeqList::multiDel(int i, int n) {
if (i<1 || i>len || i + n - 1 > len)
return;
for (int j = i - 1; j < len; j++)
list[j] = list[j + n];
len -= n;
}
void SeqList::outPut() {
cout << len << ' ';
for (int i = 0; i < len; i++)
cout << list[i] << ' ';
cout << endl;
}
int main()
{
int n;
cin >> n;
SeqList myList(n);
myList.outPut();
int i, * item;
cin >> i >> n;
item = new int[n];
for (int j = 0; j < n; j++)
cin >> item[j];
myList.multiInsert(i, n, item);
myList.outPut();
delete[]item;
cin >> i >> n;
myList.multiDel(i, n);
myList.outPut();
return 0;
}
合并(含排序操作
#include <iostream>
using namespace std;
class SeqList{
int *list;
int len;
int maxLen;
public:
SeqList(int n);
~SeqList();
void Init();
SeqList combineList(SeqList &li);
void outPut();
};
SeqList::SeqList(int n) {
len = n;
maxLen = 1000;
list = new int[maxLen];
}
SeqList::~SeqList() {
delete []list;
}
SeqList SeqList::combineList(SeqList &li) {
SeqList combine(len+li.len);
int i=0,j=0,k=0;
while (i<len && j<li.len)
{
if(list[i]<li.list[j])
{
combine.list[k] = list[i];
i++;
}
else
{
combine.list[k] = li.list[j];
j++;
}
k++;
}
while (i<len)
{
combine.list[k] = list[i];
i++,k++;
}
while (j<li.len)
{
combine.list[k] = li.list[j];
j++,k++;
}
return combine;
}
void SeqList::Init() {
for(int i=0;i<len;i++)
cin>>list[i];
}
void SeqList::outPut() {
cout<<len<<' ';
for(int i=0;i<len;i++)
cout<<list[i]<<' ';
cout<<endl;
}
int main()
{
int n,m;
cin>>n;
SeqList firstList(n);
firstList.Init();
cin>>m;
SeqList secondList(m);
secondList.Init();
SeqList thirdList = firstList.combineList(secondList);
thirdList.outPut();
return 0;
}
循环移位
原数据:1,2,3,4,5,6
左移3位:4,5,6,1,2,3(与原数据对比
右移4位:3,4,5,6,1,2(与原数据对比
#include <iostream>
using namespace std;
class SeqList{
int *list;
int len;
int maxLen;
public:
SeqList(int n);
~SeqList();
void move();
void outPut();
};
SeqList::SeqList(int n) {
len = n;
maxLen = 100;
list = new int[maxLen];
for(int i=0;i<n;i++)
cin>>list[i];
}
SeqList::~SeqList() {
delete []list;
}
void SeqList::move()
{
int direction,step;
cin>>direction>>step;
while (step>=len)
step-=len;
int *temp = new int[len];
for(int i=0;i<len;i++)
temp[i]=list[i];
if(direction == 0)
{
for(int i=0; i<= len-1-step; i++) {
list[i]=temp[i+step];
}
for(int i=len-step; i<len; i++) {
list[i]=temp[i-(len-step)];
}
}
if(direction == 1)
{
for(int i=0;i<step;i++){
list[i]=temp[len-step+i];
}
for(int i=step;i<len;i++){
list[i]=temp[i-step];
}
}
}
void SeqList::outPut() {
for(int i=0;i<len;i++)
cout<<list[i]<<" ";
cout<<endl;
}
int main()
{
int n;
cin>>n;
SeqList myList(n);
myList.outPut();
myList.move();
myList.outPut();
myList.move();
myList.outPut();
return 0;
}