Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- typedef struct nodo{
- int valor;
- struct nodo* ptrSig;
- }TNodo;
- int lista_vacia(TNodo *);
- void inserta_inicio(TNodo **, int);
- int buscar_kesimo(TNodo*,int);
- void inserta_inicio(TNodo **ptrListaSE, int valor){
- TNodo *ptrNuevo;
- ptrNuevo = (TNodo*)malloc(sizeof(TNodo));
- ptrNuevo->valor = valor;
- ptrNuevo->ptrSig = *ptrListaSE;
- *ptrListaSE = ptrNuevo;
- }
- int lista_vacia(TNodo * ptrListaSE){
- return ptrListaSE==NULL;
- }
- int buscar_kesimo(TNodo * pt1,int k){
- int i=1,kesimo;
- TNodo *p2=pt1;TNodo *p1=pt1;
- if(k<=0) {
- printf("Valor invalido\n");
- return -1;
- }
- /*Movemos k valores el puntero p1*/
- for(i=0;i<k;i++){
- if(p2==NULL){
- printf("Valor invalido\n");
- return -1;
- }
- p2=p2->ptrSig;
- }
- /*Si p2 termina, entonces*/
- if(p2==NULL){
- printf("Valor invalido\n");
- return -1;
- }
- /*Ahora, movemos ambos punteros a la misma velocidad, cuando p2
- * acabe significa que p1 estarΓ en el lugar correcto */
- while(p2->ptrSig!=NULL){
- p1=p1->ptrSig;
- p2=p2->ptrSig;
- }
- kesimo=p1->valor;
- return kesimo;
- }
- int main(int argc, char** argv) {
- TNodo * ptrListaSE = NULL;
- TNodo * ptrUltimo = NULL;
- int kesimo;
- inserta_inicio(&ptrListaSE, 4);
- inserta_inicio(&ptrListaSE, 6);
- inserta_inicio(&ptrListaSE, 9);
- inserta_inicio(&ptrListaSE, 1);
- inserta_inicio(&ptrListaSE, 2);
- inserta_inicio(&ptrListaSE, 3);
- inserta_inicio(&ptrListaSE, 6);
- kesimo=buscar_kesimo(ptrListaSE,1);
- printf("%d\n",kesimo);
- kesimo=buscar_kesimo(ptrListaSE,2);
- printf("%d\n",kesimo);
- kesimo=buscar_kesimo(ptrListaSE,3);
- printf("%d\n",kesimo);
- kesimo=buscar_kesimo(ptrListaSE,4);
- printf("%d\n",kesimo);
- kesimo=buscar_kesimo(ptrListaSE,8);
- printf("%d\n",kesimo);
- return (EXIT_SUCCESS);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement