Red de conocimiento informático - Conocimiento informático - Ayúdame a convertir este código C a código C++ (100 puntos si estás muy satisfecho)

Ayúdame a convertir este código C a código C++ (100 puntos si estás muy satisfecho)

No es difícil :-D, el código es el siguiente:

#include

usando el espacio de nombres std;

#define NULL 0

#define OK 1

#define ERROR 0

#define DESBORDAMIENTO -2

typedef int Estado

typedef; int Elemtype ;//definir tipo de elemento de datos

typedef struct Cnode

{

Elemtype data

struct Cnode *next; /p >

}CNodo;

CNodo *joseph;

Estado Create_clist(CNodo *clist,int n)

{

CNodo *p,*q;

int i;

clist=NULL

for(i=n;i>=1;i- -)

{

p=(CNode *)malloc(sizeof(CNode));

if(p==NULL)

return OVERFLOW;// Error en la asignación de almacenamiento

p->data=i

p->next=clist

clist=p; /p >

if(i==n)

q=p;// Utilice q para apuntar al último nodo de la lista enlazada

}

q-> next=clist;//Apunte el campo de enlace del último nodo de la lista enlazada al primer nodo de la lista enlazada para formar una lista enlazada circular

joseph=clist;/ /Asignar el puntero al encabezado de la lista circular enlazada creada A variables globales

Regresar OK;

}///////////////. /////////////end

Estado Joseph(CNode *clist,int m,int n,int k)

{

int i;

CNode *p ,*q;

if(m>n)

return ERROR;//posición inicial

si(! Create_clist(clist,n))

Devuelve ERROR;//Error al crear una lista circular

p=joseph;//*p apunta a la lista circular de números de creación

for(i=1;i

p=p->next;//*p apunta al nodo en la posición m

while (p)

{

for(i=1;i

p=p->next;/ /buscar el k-1er nodo

q=p->next;

cout<data;// genera el nodo que debería estar fuera de la columna

si(p ->siguiente==p)

p=NULL;//Eliminar el último nodo

else <

{

p->next=q->next

p=p->siguiente

libre(q

}

}//mientras

clist=NULL;

}//end

void main()

{

int m,n,k ,i;

CNode *clist;

clist=NULL;//initialize clist

cout<<"\nIngrese el número de personas sentadas alrededor del mesa redonda, n: ";

cin>>n;

cout<<"(n) Por favor ingrese la posición de la persona que comienza a contar por primera vez m:" ;

cout<<"(n) Por favor ingrese la posición de la persona que comienza a contar por primera vez m:"

p>

cin>>m;

cout<<"(n) ¿Hasta qué número quieres contar antes de poder salir de la cola?"

cin>>k

Create_clist; (clist,n); //crea una lista circular encadenada con nodos

cout<<"/n El orden en el que la enésima persona sale de la columna es el siguiente:\n"; p>

Joseph(clist,m,n,k);

cout<<"/nn El siguiente es el resultado del algoritmo de matriz:\n";

//La parte de implementación de la matriz es en realidad más simple O(∩_∩)O

int nCountOff=0, nLeave=0,*nArr=new int [n];

for(i=0. i

for(i=m-1;nLeave

{

i%=n;

if(nArr[i]) nCountOff ++; // El personal no listado informa sus números

if(nCountOff==k)

{

nCountOff= 0;

nArr[i]=0;

nCountOff=0;

nArr[i]=0; //personas fuera de la columna si su el contador de informes es divisible por k

nLeave++;

cout<

}

}

cout<

}//main

Su algoritmo original no se ha eliminado para facilitar la comparación.

C++ es básicamente igual a C en sintaxis, pero extiende C en términos de ideas y funciones, y agrega algunos conceptos y palabras clave. Las principales diferencias son las siguientes:

1. C++ está orientado a objetos y tiene el concepto de clases, incluidas funciones miembro, variables miembro, herencia, etc.

Y C está orientado a procesos y la unidad básica es una función.

2.C++ admite sobrecarga y polimorfismo. C++ admite sobrecarga y polimorfismo, lo que permite que varias funciones tengan el mismo nombre de función y la implementación de la función puede ser completamente diferente

3. C++ tiene nuevos operadores para operaciones dinámicas de matriz y puntero, como C. mucho más conveniente

Si desea conocer contenido más específico, familiarícese con el libro de texto:-D

.