nefu瑞格顺序表
–题目来源-nefu瑞格
4882
#include<iostream>
#include<stdlib.h>
using namespace std;
const int defaultSize = 10;
class SeqList {
protected:
int *data;
int maxSize; //表最大可容纳项数
int last; //当前表大小
public:
SeqList(int sz = defaultSize);
SeqList(SeqList &l);
~SeqList();
int Length() const; //计算表长度
int getData(int i) const; //取第i歌表项的值,存放在x中
void setData(int i,int x);
bool Insert(int i,int x); //插入x在第i歌表项之后
void Remove(int i);
void output(); // 输出顺序表
};
SeqList::SeqList(int sz)
{
if (sz>0) {
maxSize = sz;
last = -1;
data = new int[maxSize];
if (data == NULL)
exit(1);
}
}
SeqList::~SeqList()
{
delete []data;
}
int SeqList::Length() const
{
return last+1;
}
int SeqList::getData(int i) const
{
return data[i];
}
void SeqList::setData(int i,int x)
{
data[i] = x;
}
bool SeqList::Insert(int i,int x)
{
if (last == maxSize-1)
return false;
if (i<0||i>last+1)
return false;
int j;
for (j=last;j>=i;j--)
data[j+1] = data[j];
data[i] = x;
last++;
return true;
}
void SeqList::Remove(int i)
{
int j;
for (j=i;j<=last-1;j++)
data[j] = data[j+1];
last--;
}
void SeqList::output()
{
int i;
for (i=0;i<=last;i++)
cout << data[i] << " ";
cout << endl;
}
//write your code here
int main()
{
int n,m,i,x;
cin >> n >> m;
SeqList l1(n),l2(m);
for (i=0;i<n;i++)
{
cin >> x;
l1.Insert(i,x);
}
for (i=0;i<m;i++)
{
cin >> x;
l2.Insert(i,x);
}
//write your code here
int min;
if(m<n)
min=m;
else
min=n;
for(i=0;i<min;i++)
{ if(l1.getData(i)==l2.getData(i))
cout<<l1.getData(i)<<" " ;
else
break;
}
i=i-1;
cout<<endl;
if(i+1==m&&i+1==n)
cout<<"=";
else if(i+1==n&&i+1<m)
cout<<"<";
else if(i+1!=n&&i+1!=m&&l1.getData(i+1)<l2.getData(i+1))
cout<<"<";
else
cout<<">";
return 0;
}
4314
#include <stdio.h>
#include <stdlib.h>
int main()
{int n,m,p,i,j;
scanf("%d %d",&n,&m);
p=m+n;
int c[p],t;
for(i=0;i<n;i++)
scanf("%d",&c[i]);
for(i=0;i<m;i++)
{
j=n+i;
scanf("%d",&c[j]);
}
for(i=0;i<m+n-1;i++)
for(j=i+1;j<m+n;j++)
{
if(c[i]>c[j])
{
t=c[i];
c[i]=c[j];
c[j]=t;
}
}
for(i=0;i<m+n;i++)
printf("%d ",c[i]);
return 0;
}
4880
#include <stdio.h>
#include <stdlib.h>
int first(int a[],int *n)
{ int i,min,lmin;
min=a[0];
lmin=0;
for(i=0;i<*n;i++)
{
if(a[i]<min)
{
min=a[i];
lmin=i;
}
}
/*for(i=lmin;i<*n-1;i++)
{
a[i]=a[i+1];
}*/
a[lmin]=a[*n-1];
*n=*n-1;
return min;
}
void second(int a[],int *n)
{ int i,k;
for(i=0;i<*n;i++)
{
if(a[i]==3)
{
for(k=i;k<*n-1;k++)
a[k]=a[k+1];
*n=*n-1;
i=i-1;
}
}
}
void third(int a[],int *n)
{
int i,j,k,flag;
for(i=0;i<*n-1;i++)
{ //flag=0;
for(j=i+1;j<*n;j++)
{
if(a[i]==a[j])
{
for(k=j;k<*n-1;k++)
a[k]=a[k+1];
*n=*n-1;
flag=1;
j=j-1;
}
}
/*if(flag==1)
{ for(k=i;k<n-1;k++)
a[k]=a[k+1];
n=n-1;
}*/
}
}
int main()
{int n,i,j,k,min,lmin,flag;
scanf("%d",&n);
int a[n];
for(i=0;i<n;i++)
scanf("%d",&a[i]);
third(a,&n);
first(a,&n);
second(a,&n);
for(i=0;i<n;i++)
printf("%d ",a[i]);
return 0;
}
4312
#include <stdio.h>
#include <stdlib.h>
int first(int a[],int *n)
{ int i,min,lmin;
min=a[0];
lmin=0;
for(i=0;i<*n;i++)
{
if(a[i]<min)
{
min=a[i];
lmin=i;
}
}
/*for(i=lmin;i<*n-1;i++)
{
a[i]=a[i+1];
}*/
a[lmin]=a[*n-1];
*n=*n-1;
return min;
}
void second(int a[],int *n)
{ int i,k;
for(i=0;i<*n;i++)
{
if(a[i]==3)
{
for(k=i;k<*n-1;k++)
a[k]=a[k+1];
*n=*n-1;
i=i-1;
}
}
}
void third(int a[],int *n)
{
int i,j,k,flag;
for(i=0;i<*n-1;i++)
{ //flag=0;
for(j=i+1;j<*n;j++)
{
if(a[i]==a[j])
{
for(k=j;k<*n-1;k++)
a[k]=a[k+1];
*n=*n-1;
flag=1;
j=j-1;
}
}
/*if(flag==1)
{ for(k=i;k<n-1;k++)
a[k]=a[k+1];
n=n-1;
}*/
}
}
int main()
{int n,i,j,k,min,lmin,flag;
scanf("%d",&n);
int a[n];
for(i=0;i<n;i++)
scanf("%d",&a[i]);
third(a,&n);
first(a,&n);
second(a,&n);
for(i=0;i<n;i++)
printf("%d ",a[i]);
return 0;
}
4311
#include <stdio.h>
#include <stdlib.h>
void reverse(int a[],int b[],int n)
{
int i;
for(i=0;i<n;i++)
{
b[n-i-1]=a[i];
}
}
int main()
{int n,i;
scanf("%d",&n);
int a[n],b[n];
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
reverse(a,b,n);
for(i=0;i<n;i++)
{
printf("%d ",a[i]);
}
printf("\n");
for(i=0;i<n;i++)
{
printf("%d ",b[i]);
}
return 0;
}
4877
#include<iostream>
#include<stdlib.h>
using namespace std;
const int defaultSize = 10;
class SeqList {
protected:
int *data;
int maxSize; //表最大可容纳项数
int last; //当前表大小
void reSize(int newSize); //改变data数组空间大小
public:
SeqList(int sz = defaultSize);
SeqList(SeqList &l);
~SeqList();
int Size() const; //计算表最大可容纳表项个数
int Length() const; //计算表长度
int Search(int &x) const; //搜索x在表中位置,函数返回表项序号
bool getData(int i,int &x) const; //取第i歌表项的值,存放在x中
void setData(int i,int &x); //用x修改第i个表项的值
bool Insert(int i,int &x); //插入x在第i歌表项之后
bool Remove(int i,int &x); //删除第i歌表项,用x返回其值
bool isEmpty(); //判断表是否空
bool isFull(); //判断表是否满
void output(); // 输出顺序表
};
//write your code here
SeqList::SeqList(int sz)
{
if (sz>0) {
maxSize = sz;
last = -1;
data = new int[maxSize];
if (data == NULL)
exit(1);
}
}
SeqList::~SeqList()
{
delete []data;
}
int SeqList::Size() const
{
return maxSize;
}
int SeqList::Length() const
{
return last+1;
}
int SeqList::Search(int &x) const
{
int i;
for(i=0;i<=last;i++)
{
if(data[i]=x)
return i;
}
}
bool SeqList::getData(int i,int &x) const
{
if(i>0&&i<=last+1)
{
x=data[i-1];
return 1;
}
else
return 0;
}
void SeqList::setData(int i,int &x)
{
data[i-1] = x;
}
bool SeqList::Insert(int i,int &x)
{
if (last == maxSize-1)
return false;
if (i<0||i>last+1)
return false;
int j;
for (j=last;j>=i;j--)
data[j+1] = data[j];
data[i] = x;
last++;
return true;
}
bool SeqList::Remove(int i,int &x)
{
int j;
if(i<0||i>last)
return 0;
else
{
x=data[i-1];
for (j=i-1;j<=last-1;j++)
data[j] = data[j+1];
last--;
return 1;
}
}
bool SeqList::isEmpty()
{
if(last==-1)
return 1;
else
return 0;
}
bool SeqList::isFull()
{
if(last+1==maxSize)
return 1;
else
return 0;
}
// the end
void SeqList::output()
{
int i;
for (i=0;i<=last;i++)
cout << data[i] << " ";
cout << endl;
}
int main()
{
SeqList l(8);
int n,i,x;
cin >> n;
for (i=0;i<n;i++) {
cin >> x;
if (l.isFull())
break;
l.Insert(i,x);
}
cout << l.Size() << " " << l.Length() << endl;
l.output();
l.Remove(3,n);
l.setData(2,n);
l.getData(1,n);
cout << n << endl;
l.output();
return 0;
}
4866
#include <stdio.h>
#include <stdlib.h>
void Josephus(int a[],int n,int m)
{
int i,j,flag=0,t=0;
for(i=0;i<n;i++)
{
if(a[i]==1)
{
flag++;
}
if(flag==m)
{
printf("%d ",i+1);
flag=0;
a[i]=0;
t++;
}
if(i>=n-1)
i=-1;
if(t==n)
break;
}
}
int main()
{int n,m,i,j;
scanf("%d",&n);
scanf("%d",&m);
int a[n];
for(i=0;i<n;i++)
a[i]=1;
Josephus(a,n,m);
return 0;
}