Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdlib.h>
- #include <stdio.h>
- #include <string.h>
- #include <stdbool.h>
- typedef struct slowo{
- char wyraz[100];
- struct slowo *next;
- }sslowo;
- void dodaj(sslowo **lista,sslowo *nowe){
- nowe->next=NULL;
- if(*(lista)==NULL){
- *lista=nowe;
- }
- else{
- sslowo *wsk=*lista;
- while(wsk->next!=NULL){
- wsk=wsk->next;
- }
- wsk->next=nowe;
- }
- }
- void dodajSlowo(char wyraz[100],sslowo **lista){
- sslowo* nowe=(sslowo*)malloc(sizeof(sslowo));
- strcpy(nowe->wyraz,wyraz);
- dodaj(lista,nowe);
- }
- void drukuj(sslowo* lista){
- sslowo* wsk=lista;
- if(lista==NULL){
- printf("Lista jest pusta");
- }else{
- printf("Elementy listy\n");
- while(wsk!=NULL){
- printf("%s\n",wsk->wyraz);
- wsk=wsk->next;
- }
- }
- }
- void szukaj(char wyraz[100],sslowo *lista){
- sslowo *szukaneSlowo=malloc(sizeof(sslowo));
- sslowo *slo=lista;
- printf("Zaczynam szukac\n");
- while(slo!=NULL){
- if(strcmp(slo->wyraz,wyraz)==0){
- szukaneSlowo=slo;
- printf("Znaleziono %s \n",slo->wyraz);
- }
- slo=slo->next;
- }
- printf("Koniec szukania\n");
- }
- int usun(char wyraz[100],sslowo **lista){
- sslowo* poprzedni=NULL;
- sslowo* wsk=*lista;
- while((wsk!=NULL) && (strcmp(wsk->wyraz,wyraz)!=0) ){
- poprzedni=wsk;
- wsk=wsk->next;
- }
- if(wsk==NULL){
- return 0;
- }
- else{
- if(poprzedni==NULL){
- (*lista)=(*lista)->next;
- free(wsk);
- }else{
- poprzedni->next=wsk->next;
- free(wsk);
- }
- return 1;
- }
- }
- int dlugosc_listy(sslowo *lista){
- int d=0;
- sslowo* wsk=lista;
- while(wsk!=NULL){
- d++;
- wsk=wsk->next;
- }
- return d;
- }
- void kasuj(sslowo **lista){
- sslowo* wsk=*lista;
- sslowo* poprzedni=NULL;
- while((wsk!=NULL)){
- poprzedni=wsk;
- wsk=wsk->next;
- //free(poprzedni);
- poprzedni->next=NULL;
- }
- }
- void bezPowtorzen(sslowo **lista){
- sslowo* wsk=*lista;
- sslowo *lista1=NULL;
- sslowo *kopia=malloc(sizeof(sslowo));
- sslowo *kopia1=malloc(sizeof(sslowo));
- sslowo *odnowa=malloc(sizeof(sslowo));
- int a=0;
- bool jest=false;
- while(kopia!=NULL && kopia->next!=NULL){
- kopia1=kopia;
- while(kopia1->next!=NULL){
- if(strcmp(kopia->wyraz,kopia1->next->wyraz)==0){
- odnowa=kopia1->next;
- kopia1->next=kopia1->next->next;
- //dodajSlowo(kopia->wyraz,&lista1);
- //usun(odnowa->wyraz,kopia1);
- }else{
- kopia1=kopia1->next;
- }
- }
- kopia=kopia->next;
- }
- printf("test");
- drukuj(kopia);
- }
- sslowo SCALAJ(sslowo *wejsciowa1, sslowo *wejsciowa2){
- sslowo *lista3=NULL;
- sslowo *ptr1=wejsciowa1;
- sslowo *ptr2=wejsciowa2;
- sslowo *ptrwyjsc;
- sslowo *tmp=malloc(sizeof(sslowo));
- sslowo *tmp2=malloc(sizeof(sslowo));
- if(ptr1==NULL){
- lista3=ptr2;
- }
- if(ptr2==NULL){
- lista3=ptr1;
- }
- if(ptr1!=NULL && ptr2!=NULL){
- while(ptr1!=NULL){
- dodajSlowo(ptr1->wyraz,&lista3);
- ptr1=ptr1->next;
- }
- while(ptr2!=NULL){
- dodajSlowo(ptr2->wyraz,&lista3);
- ptr2=ptr2->next;
- }
- }
- return *lista3;
- }
- int main(void){
- sslowo *lista=NULL;
- dodajSlowo("cos",&lista);
- dodajSlowo("cs",&lista);
- drukuj(lista);
- szukaj("cs",lista);
- usun("cos",&lista);
- dodajSlowo("ss",&lista);
- //kasuj(&lista);
- drukuj(lista);
- sslowo *lista1=NULL;
- sslowo *scal=malloc(sizeof(sslowo));
- //dodajSlowo("sis",&lista1);
- *scal=SCALAJ(lista,lista1);
- drukuj(scal);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement