Advertisement
melnikovmaxim

C_Linked list

Jan 2nd, 2020
357
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.75 KB | None | 0 0
  1. // C C++ Linked list.cpp : Этот файл содержит функцию "main". Здесь начинается и заканчивается выполнение программы.
  2. //
  3.  
  4. #include <stdio.h>
  5. #include <malloc.h>
  6. #include <string.h>
  7. #include <conio.h>
  8. #include <stdlib.h>
  9.  
  10. typedef struct Node
  11. {
  12.     char data[30];
  13.     struct Node* next;
  14. } Node;
  15.  
  16. void AddNode(Node** current, char data[30]);
  17. void PrintList(Node* start);
  18. void RemoveList(Node* start);
  19.  
  20. int main()
  21. {
  22.     Node* start;
  23.     Node** current = (Node**)malloc(sizeof(Node*));
  24.  
  25.     if (current)
  26.     {
  27.         (*current) = (Node*)malloc(sizeof(Node));
  28.  
  29.         if (*current)
  30.         {
  31.             sprintf_s((*current)->data, sizeof(char[2]), "%s", "1");
  32.             (*current)->next = NULL;
  33.             start = (*current);
  34.             char data[30];
  35.  
  36.             int k;
  37.  
  38.             printf_s("%s", "Enter number quantity from 2 to 999\n");
  39.             scanf_s("%s", data);
  40.             k = atoi(data);
  41.  
  42.             if (k < 2)
  43.                 k = 2;
  44.             else if (k > 999)
  45.                 k = 999;
  46.  
  47.             for (int i = 1; i < k; i++)
  48.             {
  49.                 sprintf_s(data, sizeof(i), "%i", i + 1);
  50.                 AddNode(current, data);
  51.             }
  52.  
  53.             PrintList(start);
  54.             RemoveList(start);
  55.         }
  56.  
  57.         free(current);
  58.     }
  59.  
  60.     printf_s("%s", "\nThe program successfully created the list and deleted it!\n\n");
  61.     system("pause");
  62.     return 0;
  63. }
  64.  
  65. void AddNode(Node** current, char data[30])
  66. {
  67.     (*current)->next = (Node*)malloc(sizeof(Node));
  68.     (*current) = (*current)->next;
  69.  
  70.     if (*current)
  71.     {
  72.         strcpy_s((*current)->data, sizeof(data), data);
  73.         (*current)->next = NULL;
  74.     }
  75. }
  76.  
  77. void PrintList(Node* start)
  78. {
  79.     while(start)
  80.     {
  81.         printf_s("%s\n", start->data);
  82.         start = start->next;
  83.     }
  84. }
  85.  
  86. void RemoveList(Node* start)
  87. {
  88.     Node* pointer;
  89.  
  90.     while (start)
  91.     {
  92.         pointer = start->next;
  93.         free(start);
  94.         start = pointer;
  95.     }
  96. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement