Untitled
unknown
plain_text
2 years ago
3.0 kB
7
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...