Utilice el método C para realizar las operaciones de establecimiento, inserción, eliminación e inversión de una tabla lineal secuencial. Y use la función principal para verificarla e implementarla en la computadora.
#includelt;iostreamgt;
usando el espacio de nombres std;
typedef int ElemType;
struct NodeType
{
datos ElemType
NodeType *siguiente
}
clase LinkList
{ p>
privado:
NodeType *Head;
público:
LinkList() //Construcción
~LinkList (); //Destrucción
void create(); //Crear tabla
void insert(); //Insertar
ElemType eliminar(); /p>
void display();
void inverse(); //Función inversa
};
//Crear una lista enlazada vacía
LinkList::LinkList()
{
Head=new NodeType;
Head-gt; next=NULL; p >
Head-gt;data=0;
}
LinkList::~LinkList()
{
NodeType *p=Head-gt; next;
//Hacer que el puntero p apunte al primer nodo de la lista enlazada
while(p!=NULL)
{
Head-gt; next=p-gt; next;
//Hacer que el puntero principal apunte al siguiente nodo de p
eliminar p;
p=Head-gt;next;
//Hacer que el nodo p apunte al nodo señalado por el puntero principal
}
eliminar encabezado;
//Finalmente elimina también el nodo principal
coutlt;lt;"¡La lista vinculada ha sido eliminada!"lt;lt;endl;
}
void LinkList::display()
{
Tipo de nodo *p;
p=Cabeza -gt; siguiente;
while(p!=NULL)
{
coutlt;lt;p-gt;datalt;lt;" ";
p=p-gt;
}
coutlt; void LinkList::create() //Elementos de la lista con enlace inverso
{
NodeType *s
ElemType x
coutlt; ;lt;"Ingrese un conjunto de datos y finalice con -10 Finalizar. "lt;lt;endl;
cingt;gt;x; //Ingresar elementos de datos.
while(x!=-10)
{
s=new NodeType; //Solicitar dinámicamente un nodo
s -gt; data=x; //Asignar un valor al campo de datos del nodo
s-gt; next=Head-gt; //Hacer que s apunte al primer nodo
Head-gt; next=s; //Hacer que el nodo principal apunte al nodo s recién aplicado
coutlt;lt;"Elemento de entrada: "lt;lt;endl;
cingt ;gt;
void LinkList::insert()
{
coutlt;lt;"La posición donde se insertará el elemento:"lt ;lt;endl;
int i;
cingt;gt;i;
coutlt;lt;"El elemento a insertar: "lt;lt ;endl;
ElemType x;
cingt; x;
NodeType *p, *q, *s; /p>
int k=1;
p=Head; //Deje que p apunte al nodo principal
q=p-gt; //Deje q apunte al primer nodo
while( klt;i amp;amp; q!=NULL)
{
p=q;
q=q-gt;next;
k ;
}
if(k==i) //implementar inserción
{
s=nuevo NodoType ;
s-gt;data=x;
p-gt;next=s;
s-gt;next=q;
coutlt;lt;"¡Registro insertado exitosamente!"lt;lt;endl;
}
else
coutlt;lt;"¡Error al insertar el registro! ";
}
ElemType LinkList::delet()
{ p>
coutlt;lt;" Introduzca el elemento que desea eliminar: "lt;lt;endl;
int x;
cingt;gt;x;
Tipo de nodo *p, *q;
Tipo de elemento y;
int k=1
p=Cabeza
q=p-gt; siguiente;
mientras(q!=NULL amp;amp; q-gt;data!=x)
{
p=q;
q=q-gt ; siguiente
}
if(q-gt; datos==x)
{
y=q-gt;
p-gt; siguiente=q-gt;
eliminar
coutlt; "Registro eliminado exitosamente
excepto!"lt;lt;endl;
}
else
{
coutlt;lt;"x no existe" lt ;lt; endl;
y=-1;
}
devuelve y;
}
void LinkList::inverse() // Inversa de la lista enlazada
{
NodeType *p, *q;
p=Head-gt; ; //Dejemos que p apunte al primer elemento
Head-gt; next=NULL //Dejemos que el campo de puntero de Head esté vacío
while(p!=NULL)
{
q=p-gt; next; // Deja que q apunte al segundo elemento
p-gt; next=Head-gt; // Deja que el campo de puntero de p esté vacío
Head-gt; next=p
p=q
}
}
void main()
{
Lista de enlaces h
h.create(); > h.display();
h.delet();
h.display()
h.insert();
h.display();
coutlt;lt;"Invertir los elementos de la lista enlazada"lt;lt;endl;
h.inverse();
h.display();
}