Red de conocimiento informático - Aprendizaje de código fuente - Programación de estructuras de datos

Programación de estructuras de datos

Un punto y coma menos, ahora está bien

El siguiente es el resultado de mi operación:

Ingrese datos, ¡¡¡deténgase cuando ingrese 0!!!

>

1

2

3

4

5

6

7

8

8 1 2 3 4 5 6 7 8

ingrese el valor que desea encontrar:

3

X = 5

Agregue principalmente esta función:

void getPos(Link rear,int Y,struct RTN *rtn)

Y estructura

struct RTN

{

Link Rtnp;

int cnt;

};/ /Se utiliza para almacenar la dirección (Rtnp) y la posición (cnt) del primer nodo a partir del puntero de cola que es el mismo que los datos Y en relación con la posición X del puntero de cola.

Proceso de operación:

Si la lista enlazada circular doble de entrada es 1, 2, 3, 4, 5, 6, 7, 8, 9

Iniciar desde el final de la lista Buscar 5

El valor de retorno es (rtn.Rtnp) que es la dirección del elemento 5 y la posición final relativa de la tabla (rtn.cnt) es 4.

Porque 8 7 6 5 es exactamente 4 posiciones

Si no se encuentra, el valor de retorno (rtn.Rtnp) es un puntero nulo y la posición (rtn.cnt) es 0.

#include

typedef int Elemtype;

typedef struct node /*definición de tipo de estructura*/

{

Datos de tipo de elemento;

nodo de estructura *siguiente;

nodo de estructura *pre

}*Enlace,LNodo;

struct RTN

{

Enlace Rtnp;

int cnt;

};

Enlace ha;

Enlace inilink(Enlace encabezado)

{

head=(Link)malloc(sizeof(LNode));

encabezado- >pre=cabeza;

cabeza ->siguiente=cabeza

return(cabeza);

}

void getPos(Enlace rear,int Y,struct RTN *rtn)

{

Temp del enlace = NULL;

int count = 0;

if (trasero->datos != Y)

temp = trasero->pre;

else

{

rtn->Rtnp = trasero;

rtn-> cnt = 0;

return ;

}

while((temp != trasero))

{

if(temp->data != Y)

{

recuento = recuento + 1;

temp = temp->pre;

}

else

{

recuento = recuento + 1;

rtn->Rtnp = temp;

rtn->cnt = recuento;

retorno ;

}

}

rtn->Rtnp = NULL ;

rtn->cnt = 0;

retorno ;

}

void setlink(Encabezado de enlace)

{ /*(usando el método de post-interpolación) para crear una lista enlazada individualmente*/

int y,i=0; p;

printf("Ingrese datos, cuando ingrese, ¡¡¡Deténgase en 0!!!\n");

p=head

scanf("% d",&y);

while(y! =0)

{

q=(Enlace)malloc(sizeof(LNode

));

q->data=y;

q->next=head;

head->pre=q;

q->pre=p;

p->siguiente=q;

p=q

i++; scanf("%d",&y);

}

head->data=i;

}

void printlink( Cabezal de enlace)

{ /*Salida de lista lineal enlazada individualmente*/

Enlace p;

int i=0;

p = cabeza;

for(;p!=NULL&&i<=cabeza->datos;i++, p=p->siguiente)

printf("%6d",p-> datos );

printf("\n");

}

main() /*programa principal*/

{

int k =0;

int X,Y;

estructura RTN rtn;

rtn.Rtnp = NULL;

rtn.cnt = 0;

ha=inilink(ha);

setlink(ha);

printlink(ha); /p> p>

printf("\n");

printf("ingrese el valor que desea encontrar:\n"); %d" ,&Y);

getPos(ha->pre,Y,&rtn);

if(rtn.Rtnp!=NULL)

{

X = rtn.cnt;

printf("X = %d \n",X

}

else);

{

printf("¡no encuentro Y!\n");

}

getch();

}