1.1数据结构瑞格顺序表

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;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值