Don't like ads? PRO users don't see any ads ;-)
Guest

volledige code

By: a guest on Jun 13th, 2012  |  syntax: None  |  size: 3.39 KB  |  hits: 20  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <stdlib.h>
  4.  
  5. #define STRLEN 64
  6.  
  7. typedef struct knoop {
  8.         char naam[STRLEN];
  9.         struct knoop *volgende;
  10. } Knoop;
  11.  
  12. void toonHelp(void);
  13. void voegToe(char *, Knoop **);
  14. void verwijder(char *, Knoop **);
  15. int aanwezig(char *, Knoop *);
  16. int geefAantal(Knoop *);
  17. void verwijderLijst(Knoop **);
  18. void toonLijst(Knoop *);
  19. char *trim(char *);
  20.  
  21. int main(void)
  22. {
  23.         char instructie[STRLEN];
  24.         Knoop *begin = NULL;
  25.         char *pi;
  26.  
  27.         printf("Testprogramma voor lineaire lijst. \n");
  28.         printf("Geef instructie (h=hulp) \n");
  29.         printf("\n> ");
  30.         memset(instructie, '\0', STRLEN);
  31.         gets(instructie);
  32.         pi = trim(instructie);
  33.         while (*pi != 'q')
  34.         {
  35.                 switch (*pi)
  36.                 {
  37.                         case 'i':
  38.                                 voegToe(trim(pi + 1), &begin);
  39.                                 break;
  40.                         case 'd':
  41.                                 verwijder(trim(pi + 1), &begin);
  42.                                 break;
  43.                         case 'f':
  44.                                 if (aanwezig(trim(pi + 1), begin))
  45.                                         printf(" \"%s\" is aanwezig. \n", trim(pi + 1));
  46.                                 else
  47.                                         printf("\"%s\" is NIET aanwezig. \n", trim(pi + 1));
  48.                                 break;
  49.                         case 'l':
  50.                                 toonLijst(begin);
  51.                                 break;
  52.                         case 'n':
  53.                                 printf(" Aantal elementen in de lijst: %d\n", geefAantal(begin));
  54.                                 break;
  55.                         case 'r':
  56.                                 verwijderLijst(&begin);
  57.                                 break;
  58.                         case 'h':
  59.                                 toonHelp();
  60.                         case 'q':
  61.                                 break;
  62.                         default:
  63.                                 printf (" Onbekende instructie (h=help)\n");
  64.                 }
  65.                 printf("\n");
  66.                 memset(instructie, '\0', STRLEN);
  67.                 gets(instructie);
  68.                 pi = trim(instructie);
  69.         }
  70.         verwijderLijst(&begin);
  71.         return 0;
  72. }
  73.  
  74. void toonHelp(void) {
  75.         printf("i <string> : voegt een element met de gegeven string (alfabetisch) toe aan de lijst\n");
  76.         printf("d <string> : verwijdert element met de gegeven string\n");
  77.         printf("f <string> : zoekt string en geeft weer of deze string aanwezig is.\n");
  78.         printf("l : toont de volledige lijst\n");
  79.         printf("n : geeft aantal elementen in de lijst\n");
  80.         printf("r : verwijdert heel de lijst\n");
  81.         printf("h : geeft help scherm (deze lijst).\n");
  82.         printf("q : einde van het programma (verwijder eerst de lijst)\n");
  83. }
  84. void voegToe(char *s, Knoop **b) {
  85.         printf("Deze functie voegt \"%s\" toe aan de lijst\n", s);
  86.         Knoop *nieuw;
  87.         Knoop *p;
  88.         nieuw = (Knoop *)malloc(sizeof(Knoop));
  89.         strcpy(nieuw->naam,s);
  90.         nieuw->volgende=NULL;
  91.         if (*b == NULL)
  92.         {
  93.         *b = nieuw;
  94.         }
  95.         else
  96.         {
  97.                 p = *b;
  98.                 while(p->volgende != NULL) p = p->volgende;
  99.                 p->volgende=nieuw;
  100.         }
  101.        
  102. }
  103. void verwijder(char *s, Knoop **b) {
  104.         printf("Deze functie verwijdert \"%s\" uit de lijst\n", s);
  105.         Knoop*vorige;
  106.         Knoop*p=*b;
  107.         if(b==NULL)
  108.         {
  109.                 printf("Persoon is niet aanwezig in de lijst");
  110.                 return;
  111.         }
  112.         else
  113.         {
  114.                 while((b!=NULL) && (strcmp(s,p->naam)!=0)) {
  115.                         vorige = p;
  116.                         p=p->volgende;
  117.                 }
  118.                 if((b!=NULL) && (strcmp(s,p->naam)==0)) {
  119.                         vorige->volgende = p->volgende;
  120.                 }
  121.         }
  122. }
  123. int aanwezig(char *s, Knoop *b) {
  124.         printf("Deze functie zoekt of \"%s\" in de lijst aanwezig is of niet\n", s);
  125.         return 0;
  126. }
  127. int geefAantal(Knoop *b) {
  128.         printf("Deze functie geeft het aantal elementen in de lijst \n");
  129.         return 0;
  130. }
  131. void verwijderLijst(Knoop **b) {
  132.         Knoop *p = *b;
  133.         while (p != NULL)
  134.         {
  135.                 *b = p->volgende;
  136.                 free(p);
  137.                 p = *b;
  138.         }
  139. }
  140. void toonLijst(Knoop *b) {
  141.         if (b == NULL)
  142.         {
  143.                 printf("De lijst is LEEG\n");
  144.         }
  145.         else {
  146.                 printf("De lijst:\n");
  147.                 while (b != NULL)
  148.                 {
  149.                         printf("%s ", b->naam);
  150.                         b = b->volgende;
  151.                 }
  152.         }
  153.         printf("\n\n");
  154. }
  155. char *trim(char *s) {
  156.         while (*s == ' ')
  157.                 s++;
  158.         return s;
  159. }