Uso de programación en lenguaje C para implementar operaciones básicas de listas enlazadas individualmente
Los resultados de la ejecución son los siguientes:
El código completo es el siguiente:
#includelt;stdio.hgt;
# includelt;stdlib.hgt;
typedef struct LNode
{
datos de caracteres
LNode *next; p>}* LNodePtr;
LNodePtr CreateList()
{
//Inicializa el nodo principal
LNodePtr head = (LNodePtr )malloc(sizeof(LNode) );
cabeza-gt; datos = 0;
cabeza-gt; siguiente = NULL
LNodePtr tNode; / nodo temporal
datos char;
while(true)
{
scanf("c",amp;data);
if(datos == '\0' || datos == '\n' || datos == '\r' || datos == '\t')
{
continuar;
}
if(data == '!')//Ingrese un signo de exclamación para dejar de insertar nodos
{
printf("Fin del elemento de lista enlazada de entrada.\n");
break
}
if; (datos gt; = 'A' amp; amp; datos lt; = 'Z')
{
tNode = (LNodePtr)malloc(sizeof(LNode) p>
tNode-gt; datos = datos /* ?Asignación de campo de datos?*/
tNode-gt; siguiente = cabeza-gt; gt; next = tNode;
}
else
{
printf("Los caracteres de entrada deben ser letras mayúsculas.
\n");
}
}
retorno cabeza;
}
/**
Función de cifrado, el método de cifrado consiste en mover todos los nodos vinculados hacia adelante mediante bits de desplazamiento, pero no admite que el desplazamiento sea mayor que el número de nodos en la lista vinculada
@ param head nodo principal de la lista vinculada
@param offset Número de dígitos para mover el nodo hacia adelante
*/
void EncryptList(LNodePtr head, int offset )
{
LNodePtr tNode = head-gt; siguiente
int i
for(i = 0; i lt; ; desplazamiento; i )
{
if(tNode-gt; next != NULL)
{
tNode = tNode- gt; siguiente;
}
p>
}
if(i == desplazamiento)
{
LNodePtr newHead = tNode;
LNodePtr tail = tNode;
while (tail-gt; next != NULL)
{
tail = tail-gt;siguiente;
}
tail-gt; siguiente = head-gt;
while(tNode- gt; siguiente != NULL)
{
if(tNode-gt; siguiente != newHead)
{
tNodo = tNode-gt; siguiente;
}
else
{
tNode-gt; siguiente = NULL; p> romper;
}
}
cabeza-gt; siguiente = nuevaCabeza;
}
else
{
printf("El movimiento no es compatible");
}
}
void ListPrint(LNodePtr cabecera)
{
if(head-gt; next != NULL)
{
LNodePtr tNode = cabecera -gt; siguiente;
mientras (tNodo-gt; siguiente! = NULL)
{
printf("c ",tNodo-gt;datos) ;
tNode = tNode-gt;siguiente;
}
printf("c", tNode-gt; datos
}
}
int main()
{
LNodePtr lista = CreateList();
printf("\nLa lista enlazada creada es la siguiente:\n");
ListP
rint(list);
EncryptList(list, 3);
printf("\nLa lista vinculada después de que todos los nodos avancen 3 bits es la siguiente:\n") ;
p>ListaImprimir(lista);
printf("\n");
devolver
} p>
Si no entiendes el código, puedes preguntarme