Ayúdame a convertir este código C a código C++ (100 puntos si estás muy satisfecho)
#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 p>
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< 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:" 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]; p> 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 .