資料結構實驗一:順序表的建立與操作實現、順序表實現約瑟夫環問題
一、順序表的建立與操作實現:
建立 n 個元素的順序表,實現輸出,插入,刪除,查詢等功能。例項程式碼如下:
#include <iostream>
using namespace std;
const int N=10;
class SeqList{
private:
int data[N];
int length;
public:
SeqList(){length=0;}
SeqList(int d[],int n);
~SeqList(){}
void Insert(int n,int x);
void Delete(int n);
void Locate(int x);
void print();
};
SeqList::SeqList(int d[],int n){
if (n>=N)
throw "傳入的引數n超出範圍";
for (int i=0;i<n;i++)
{
data[i]=d[i];
}
length=n;
}
void SeqList::Insert(int n,int x){
if (n>N) throw "上溢";
if (n<1||n>length+1) throw "插入位置非法";
for (int i=length;i>=n;i--)
{
data[i]=data[i-1];
}
data[--n]=x;
length++;
}
void SeqList::Delete(int n){
if (length==0) throw "下溢";
if (n<1||n>length) throw "刪除位置非法";
for (int i=n;i<length;i++){
data[i-1]=data[i];
}
length--;
}
void SeqList::Locate(int x){
for (int i=0;i<length;i++){
if (data[i]==x)
cout<<"查詢到"<<x<<"這個資料,在第"<<++i<<"位"<<endl;
}
}
void SeqList::print(){
for (int i=0;i<length;i++){
cout<<data[i]<<' ';
}
cout<<endl;
}
int main(){
int a[6]={1,2,6,8,9,5};
SeqList list(a,6);
cout<<"初始資料為:"<<endl;
try {
list.print();}
catch(char *s)
{
cout<<s<<endl;
}
cout<<"在第一個資料處插入5:"<<endl;
try {
list.Insert(1,5);}
catch(char *s)
{
cout<<s<<endl;
}
list.print();
cout<<"查詢資料6:"<<endl;
try {
list.Locate(6);}
catch(char *s)
{
cout<<s<<endl;
}
list.print();
cout<<"刪除第一個資料:"<<endl;
try {
list.Delete(5);}
catch(char *s)
{
cout<<s<<endl;
}
list.print();
return 0;
}
結果截圖:
二、使用順序表實現約瑟夫環問題:
例項程式碼如下:
#include <iostream>
using namespace std;
const int N=100;
class Joseph{
private:
int a[N];//開闢一個順序表
int count;//計數器
public:
Joseph(int n){
for (int i=0;i<n;i++) //給n個人編號
a[i]=i+1;
};
~Joseph(){};
void Locate(int n,int m,int count);
void Delete(int n,int i);
};
void Joseph::Locate(int n,int m,int count){
int k=n;//k儲存總人數
for (int i=0;i<k;i++){
static int j=0;//定義j為靜態變數,保持上一次的值
for (;;j++,count++){
if (j==n)
j=0; //當到第n個人報數後,回到第一個人
if (count==m){
cout<<a[j]<<' ';//輸出出圈的編號
Delete(n,j);//出圈,刪除該位置
n--;//人數減一
break;//跳出迴圈
}
}
count=1;//計數器初始化
}
}
void Joseph::Delete(int n,int i){
for (int j=i;j<n-1;j++)
a[j]=a[j+1];
}
int main (){
int n,m;
cout<<"請輸入人數n,密碼m:"<<endl;
cin>>n>>m;
Joseph J(n);
cout<<"出圈的順序為:"<<endl;
J.Locate(n,m,1);
return 0;
}
相關文章
- 資料結構c語言實現順序表基本操作資料結構C語言
- 順序表的實現
- Java實現順序表Java
- 實驗二:順序表的基本操作實現及其應用
- 南郵資料結構實驗1.1:順序表的相關操作資料結構
- 基礎資料結構(一)---(最全)定長順序表的實現資料結構
- DS順序表--類實現
- 具體實現程式碼@資料結構探險——順序表資料結構
- 線性表的使用——順序實現
- 資料結構_順序表_順序表的初始化、插入、刪除、修改、查詢列印(基於C語言實現)資料結構C語言
- 線性表-順序表C語言實現C語言
- 順序表實現二分排序排序
- 資料結構實驗之連結串列一:順序建立連結串列資料結構
- 資料結構 - 線性表 - 順序表資料結構
- 考研資料結構-線性表-順序表資料結構
- 順序表的基本方法實現C語言版C語言
- 資料結構與演算法 | 線性表 —— 順序表資料結構演算法
- python實現基本資料結構第二篇(順序棧、鏈棧,順序隊、鏈隊)Python資料結構
- 順序棧的實現方式
- 約瑟夫環(陣列實現)陣列
- php與資料庫連線如何實現資料的順序和倒序PHP資料庫
- python演算法與資料結構-順序表(37)Python演算法資料結構
- 迴圈連結串列(約瑟夫問題)--python實現Python
- 順序表
- 【資料結構】堆疊(順序棧、鏈棧)的JAVA程式碼實現資料結構Java
- 線性表的順序儲存C++程式碼實現C++
- C語言資料結構:順序棧的建立、出入棧,以及使用順序棧實現十進位制轉十六進位制C語言資料結構
- 順序表有序插入資料
- 順序表應用5:有序順序表歸併
- 順序表應用6:有序順序表查詢
- 順序棧與鏈式棧的圖解與實現圖解
- 【資料結構】佇列(順序佇列、鏈佇列)的JAVA程式碼實現資料結構佇列Java
- 資料結構練習題(順序表和單連結串列)C++資料結構C++
- 用Python實現約瑟夫環演算法Python演算法
- 順序賦值的方式實現流水燈賦值
- 線性表之順序儲存結構
- 11 線性表的順序儲存結構
- 順序結構