Untitled

 avatar
unknown
plain_text
2 years ago
3.0 kB
6
Indexable
#include <stdio.h>
#include <stdlib.h>

typedef struct el_listy
{
        int klucz;
        struct el_listy *nast;
}LISTA,*LISTAWSK;

int przegladanie(p)
LISTA *p;
{
      int licznik=0;
 while (p != NULL)
 {
       p=p->nast;
       
       if(p!=NULL)
       {
                  licznik++;
                  printf("%d\n",p->klucz);
       }          
 }     
 return licznik;
}

void dodaj_za(p,k)
LISTA *p;
int k;
{
      LISTA *pom;
      pom=(LISTAWSK)malloc(sizeof(LISTA));
      pom->klucz=k;
      pom->nast=p->nast;
      p->nast=pom;
} 

void dodaj_przed(p,k)
LISTA *p;
int k;
{
    LISTA *pom;
    pom=(LISTAWSK)malloc(sizeof(LISTA));
    pom->klucz=p->klucz;
    pom->nast=p->nast;
    p->klucz=k;
    p->nast=pom;
}

void usun_nast(p)
LISTA *p;
{
      LISTA *pom;
      if(p->nast!=NULL)
      {
         pom=p->nast;
         p->nast=pom->nast;
      }
      else
      printf("nie ma nastepnego\n"); 
} 

void usun(glowa,p)
LISTA *p, *glowa;

{
    LISTA *pom;
    pom=p->nast;
    if(pom==NULL)
    {
     pom=glowa;
     p=pom->nast;
     while (p->nast != NULL)
      {
         p=p->nast; pom=pom->nast;
      }     
     pom->nast=NULL;
          
    }
    else
    {
      /*
       p->klucz=pom->klucz;
       p->nast=pom->nast;
      */
      *p=*pom; 
    }
}

LISTA *szukaj(p,k)
LISTA *p;
int k;
{
 
 while (p != NULL)
 {
        
        if(p->nast==NULL) return NULL;
        else
        {
             p=p->nast; //printf("---%d\n",p->klucz);
        if(p->klucz==k)return p;
        }
 }  
 return NULL;   
}


int liczrek(p)
LISTA *p;
{
 //printf("%d\n",p->klucz);
 if (p->nast==NULL) return 0;
 else
     {
     return 1+liczrek(p->nast);
     }
 
      
}


void przeglrewrek(p)
LISTA *p;
{
 
   if (p != NULL) 
   {
      przeglrewrek(p->nast);
      printf("%d  \n",p->klucz); 
   }     
 }
 void przeglrek(p)
LISTA *p;
{
 
   if (p != NULL) 
   {
      printf("%d  \n",p->klucz);
      przeglrek(p->nast); 
   }     
 }
 
 
 int maxrek(p)
 LISTA *p;
 {
       int max;
       if(p==NULL)
          return 0;
       if (p->nast== NULL)
           return p->klucz;
       
       max=maxrek(p->nast);
       if (p->klucz> max)
          return p->klucz;
       else 
          return max; 
  }


 
 LISTAWSK odwroc(p)
 LISTA *p;
 {
 LISTAWSK w3, w2=p, w1=NULL;
 while(w2!=NULL)
       {  w3 = w2->nast; w2->nast=w1; w1=w2; w2=w3;}   
 return w1;     
 }
 
int main(int argc, char *argv[])
{
  int k, szk;
  LISTA *glowa,*ost,*znal; 
  LISTA *pom;
  glowa=NULL;
  pom=(LISTA *)malloc(sizeof(LISTA));
  pom->klucz=0;
  pom->nast=NULL;
  glowa=pom;
  printf("podaj klucz kolejnego elementu listy 0 - koniec:\n");
  scanf("%d",&k);
  ost=glowa;
  while (k)
   {
    dodaj_za(ost, k);
    ost=ost->nast;
    printf("podaj klucz kolejnego elementu listy 0 - koniec listy:\n");
    scanf("%d",&k);
  }
  printf("przegladanie listy:  - %d\n", przegladanie(glowa));
  printf("dlugosc listy=%d\n",liczrek(glowa));

 /*
 
 .....
 
 */
  return 0;
}
Editor is loading...