C++:顺序表类实现约瑟夫问题_密码不同

//.h

#pragma once
#include <iostream>
using namespace std;
#define MAXSIZE 100

template <class T>
class SeqList
{
T data[MAXSIZE];
int length;
public:
SeqList();
SeqList(T a[],int n);
~SeqList();
void Josephus2(int p[], int m0);
void PrintList();
};

template <class T>
SeqList<T>::SeqList()
{
length = 0;
}

template<class T>
SeqList<T>::SeqList(T a[], int n)
{
length = n;
for (int i = 0; i < length; i++)
data[i] = a[i];
}

template <class T>
SeqList<T>::~SeqList()
{
}

template<class T>
void SeqList<T>::Josephus2(int p[], int m0)
{
int k = 1;
int m = m0;
cout << " 出圈顺序为:" << endl;
while (length != 0)
{
k--;
int i = (k + m - 1) % length;
cout << data[i] << " ";
m = p[i];
for (int j = i; j < length - 1; j++)
{
data[j] = data[j + 1];
p[j] = p[j + 1];
}
length--;
k = i + 1;
}
cout << endl;
}

template<class T>
void SeqList<T>::PrintList()
{
for (int i = 0; i < length; i++)
cout << data[i] << " ";
cout << endl;
}

// 约瑟夫问题 密码不同.cpp : 定义控制台应用程序的入口点。
//主函数

#include "stdafx.h"
#include "SeqList.h"
#include <iostream>
using namespace std;

int main()
{
int a[6] = { 1,2,3,4,5,6 };
int b[6] = { 1,2,3,4,5,6 };

SeqList<int> s(a,6);
s.PrintList();
s.Josephus2(b,3);

system("PAUSE");
return 0;
}

时间: 2024-08-11 03:30:38

C++:顺序表类实现约瑟夫问题_密码不同的相关文章

线性表的顺序存储结构之顺序表类的实现_Java

在上一篇博文--线性表接口的实现_Java中,我们实现了线性表的接口,今天让我们来实现线性表的顺序存储结构--顺序表类. 首先让我们来看下顺序表的定义: 线性表的顺序存储是用一组连续的内存单元依次存放线性表的数据元素,元素在内存的物理存储次序与它们在线性表中的逻辑次序相同,即元素ai与其直接前驱ai-1及直接后继ai+1的存储位置相邻.顺序存储的线性表也成为顺序表(sequential list). 顺序表类SeqList提供线性表基于顺序存储结构的一种实现,它有两个私有成员变量table和n,

顺序表类的定义

/////////////////////////////////// //顺序表类的定义 // #include "SqList.h" ////////////////////////////////// template<class T> class SqList { private: T* elem; //表首址 int length; //表长 int listsize; //表容量 public: //构造函数,创建容量为m的空表 SqList(int m) {

Java语言描述顺序表类,顺序表类的基本操作实现

数据结构(Java版)ch2 线性表的顺序存储(顺序表) 线性表的抽象数据Java接口描述如下: package ch2; /** * 线性表的抽象数据接口,用Java语言描述线性表的这些功能! * @author 房廷飞 * */ public interface IList { public void clear(); //将线型表置成空表 public boolean isEmpty(); //判断是不是空表 public int length(); //返回线性表的长度 public O

DS顺序表--类实现

题目描述 实现顺序表的用C++语言和类实现顺序表 属性包括:数组.实际长度.最大长度(设定为1000) 操作包括:创建.插入.删除.查找 类定义参考 输入 第1行先输入n表示有n个数据,即n是实际长度:接着输入n个数据第2行输入要插入的位置和新数据第3行输入要插入的位置和新数据第4行输入要删除的位置第5行输入要删除的位置第6行输入要查找的位置第7行输入要查找的位置 输出 数据之间用空格隔开 第1行输出创建后的顺序表内容,包括顺序表实际长度和数据 每成功执行一次操作(插入或删除),输出执行后的顺序

动态顺序表 与 双向链表的模板类

//////////////////////////////////////////////////////////////////////// /////////////////////泛型编程之动态顺序表的模板///////////////////////// //////////////////////////////////////////////////////////////////////// #include<iostream> #include<string> u

线性表—顺序表

引言(重点): 1.线性表的概述 2.线性表的抽象数据类型描述 3.线性表的实现方式 4.线性表的具体实现 5.每种具体实现的分析 1.什么是线性表?线性表(Linear List):由同类型元素构成有序序列的线性结构. 特征:1.表中元素个数称为线性表的长度2.线性表没有元素时,称为空表3.表起始位置称表头,表结束位置称为表尾4.在一个元素的前面的元素叫前驱元素,在一个元素后面的元素叫后继元素. 2.线性表的抽象数据类型描述 List MakeEmpty():初始化一个空线性表L;Elemen

顺序表实验2

<数据结构> 实验报告 题目:_顺序表的实现 学号:___________ 姓名:___________ 东南大学计算机系 实验题目 一.    实验目的 1.    掌握顺序表的基本操作,实现顺序表的插入.删除.查找等基本运算. 二.    实验内容 1.                       完善顺序表的定义,并运用其实现线性表的操作. 2.                       (课上任务) 选题一:集合的交.并.差运算 [问题描述]         编制一个能演示执行集合的

c++中的顺序表写法,主要实现(增删查改,构造函数,运算符重载)

本文的内容主要是,利用c++写出顺序表,并对写出的代码进行测试, 主要实现的功能:实现对顺序表的增删查改, 要写的函数:构造函数,赋值运算符重载,析构函数.在编写代码过程中应注意到深浅拷贝问题. 下面是顺序表的类函数: #pragma once #include<iostream> using namespace std; typedef int DataType; class SeqList { public: SeqList(); SeqList(DataType *array, size

数据结构Java实现02----线性表与顺序表

[正文] 本节内容: 线性结构 线性表抽象数据类型 顺序表 顺序表应用 一.线性结构: 如果一个数据元素序列满足: (1)除第一个和最后一个数据元素外,每个数据元素只有一个前驱数据元素和一个后继数据元素: (2)第一个数据元素没有前驱数据元素: (3)最后一个数据元素没有后继数据元素. 则称这样的数据结构为线性结构. 二.线性表抽象数据类型: 1.线性表抽象数据类型的概念: 线性表抽象数据类型主要包括两个方面:既数据集合和该数据集合上的操作集合. 数据集合: 可以表示为a0,a1,a2,...a