Untitled
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...