idastan97

Moodle Linked Lists Exercises

Nov 10th, 2016
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.86 KB | None | 0 0
  1. #include <stdio.h>
  2.  
  3. typedef struct _nodes{
  4.     int num;
  5.     struct _nodes *link;
  6. } nodes;
  7.  
  8. void printList(nodes *f){
  9.     if (f==NULL)
  10.         return;
  11.     printf("%i ", f->num);
  12.     printList(f->link);
  13. }
  14.  
  15. int nodesNumber(nodes *f){
  16.     int count=0;
  17.     while (f!=NULL){
  18.         count++;
  19.         f=f->link;
  20.     }
  21.     return count;
  22. }
  23.  
  24. nodes *first;
  25.  
  26. void addFront(int x){
  27.     nodes *p=(nodes*)malloc(sizeof(nodes));
  28.     p->num=x;
  29.     p->link=first;
  30.     first=p;
  31. }
  32.  
  33. void addAt(int index, int x){
  34.     nodes *p=first;
  35.     int i;
  36.     for (i=0; i<index-1; i++)
  37.         p=p->link;
  38.     nodes *ip=(nodes*)malloc(sizeof(nodes));
  39.     ip->num=x;
  40.     ip->link=p->link;
  41.     p->link=ip;
  42. }
  43.  
  44. void reverse(nodes *f, nodes *prev){
  45.     if (f->link==NULL){
  46.         first=f;
  47.         f->link=prev;
  48.         return;
  49.     }
  50.     reverse(f->link, f);
  51.     f->link->link=f;
  52.     f->link=prev;
  53. }
  54.  
  55. int main(void) {
  56.     first=(nodes*)malloc(sizeof(nodes));
  57.     first->num=1;
  58.     first->link=(nodes*)malloc(sizeof(nodes));
  59.     first->link->num=5;
  60.     first->link->link=(nodes*)malloc(sizeof(nodes));
  61.     first->link->link->num=19;
  62.     first->link->link->link=(nodes*)malloc(sizeof(nodes));
  63.     first->link->link->link->num=32;
  64.     first->link->link->link->link=(nodes*)malloc(sizeof(nodes));
  65.     first->link->link->link->link->num=2;
  66.     first->link->link->link->link->link=(nodes*)malloc(sizeof(nodes));
  67.     first->link->link->link->link->link->num=4;
  68.     first->link->link->link->link->link->link=NULL;
  69.     printf("Initial list:\n");
  70.     printList(first);
  71.     printf("\nNumber of nodes: %i\n", nodesNumber(first));
  72.     printf("\nInserting 8 at the beginning:\n");
  73.     addFront(8);
  74.     printList(first);
  75.     printf("\nNumber of nodes: %i\n", nodesNumber(first));
  76.     printf("\nInserting 7 at position 3:\n");
  77.     addAt(3, 7);
  78.     printList(first);
  79.     printf("\nNumber of nodes: %i\n", nodesNumber(first));
  80.     printf("\nReverse:\n");
  81.     reverse(first, NULL);
  82.     printList(first);
  83.     printf("\nNumber of nodes: %i\n", nodesNumber(first));
  84.     return 0;
  85. }
Advertisement
Add Comment
Please, Sign In to add comment