Advertisement
Guest User

Untitled

a guest
Mar 24th, 2019
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.63 KB | None | 0 0
  1. #include <stdio.h>
  2.  
  3. #include <stdlib.h>
  4.  
  5.  
  6.  
  7. typedef struct Node {
  8.  
  9. int data;
  10.  
  11. struct Node *nextadd;
  12.  
  13. }NODE;
  14.  
  15.  
  16.  
  17. NODE *firstnode = NULL;
  18.  
  19. NODE *lastnode = NULL;
  20.  
  21. int cnt = 0;
  22.  
  23.  
  24.  
  25. void add(int num) {
  26.  
  27. if (cnt > 9) {
  28.  
  29. printf("You can't make more than 10 of them.");
  30.  
  31. return;
  32.  
  33. }
  34.  
  35. NODE *newnode = (NODE *)malloc(sizeof(NODE));
  36.  
  37. cnt++;
  38.  
  39. newnode->data = num;
  40.  
  41. newnode->nextadd = NULL;
  42.  
  43. if (firstnode == NULL) {
  44.  
  45.  
  46.  
  47. firstnode = newnode;
  48.  
  49. lastnode = newnode;
  50.  
  51. }
  52.  
  53. else {
  54.  
  55. lastnode->nextadd = newnode;
  56.  
  57. lastnode = newnode;
  58.  
  59. }
  60.  
  61. }
  62.  
  63.  
  64.  
  65. void erase(int num) {
  66.  
  67. NODE *temp = firstnode->nextadd;
  68.  
  69. if (firstnode == NULL) {
  70.  
  71. printf("No value.\n");
  72.  
  73. return;
  74.  
  75. }
  76.  
  77. if (firstnode->data == num) {
  78.  
  79.  
  80.  
  81. firstnode = firstnode->nextadd;
  82.  
  83. cnt--;
  84.  
  85.  
  86.  
  87. }
  88.  
  89. else {
  90.  
  91. NODE *before = firstnode;
  92.  
  93. while (1) {
  94.  
  95. if (temp->data == num) {
  96.  
  97. NODE *node_free = temp;
  98.  
  99. before->nextadd = temp->nextadd;
  100.  
  101. free(node_free);
  102.  
  103. lastnode = before;
  104.  
  105. cnt--;
  106.  
  107. break;
  108.  
  109. }
  110.  
  111. else {
  112.  
  113. if (temp->nextadd == NULL) {
  114.  
  115. printf("No value.\n");
  116.  
  117. break;
  118.  
  119. }
  120.  
  121. before = before->nextadd;
  122.  
  123. temp = temp->nextadd;
  124.  
  125. }
  126.  
  127. }
  128.  
  129. }
  130.  
  131. return;
  132.  
  133. }
  134.  
  135.  
  136.  
  137. void insert(int num, int num1) {
  138.  
  139. int i;
  140.  
  141. if (firstnode == NULL) {
  142.  
  143. printf("No value.\n");
  144.  
  145. return;
  146.  
  147. }
  148.  
  149. NODE *temp = firstnode;
  150.  
  151. for (i = 1;temp != NULL;++i) {
  152.  
  153. if (temp->data == num) {
  154.  
  155. NODE *newnode = (NODE *)malloc(sizeof(NODE));
  156.  
  157. newnode->data = num1;
  158.  
  159. newnode->nextadd = temp->nextadd;
  160.  
  161. temp->nextadd = newnode;
  162.  
  163. cnt++;
  164.  
  165. break;
  166.  
  167. }
  168.  
  169. temp = temp->nextadd;
  170.  
  171. }
  172.  
  173.  
  174.  
  175. }
  176.  
  177.  
  178.  
  179. void show() {
  180.  
  181. int i;
  182.  
  183. if (firstnode == NULL) {
  184.  
  185. printf("No value.\n");
  186.  
  187. return;
  188.  
  189. }
  190.  
  191. else {
  192.  
  193. NODE *temp = firstnode;
  194.  
  195. for (i = 1; temp != NULL; ++i) {
  196.  
  197. printf("%d value : %d \t", i, temp->data);
  198.  
  199. temp = temp->nextadd;
  200.  
  201. }
  202.  
  203. }
  204.  
  205. }
  206.  
  207.  
  208.  
  209.  
  210.  
  211.  
  212.  
  213. int main() {
  214.  
  215. int select, i, input_num, input_num1;
  216.  
  217. int digit = 8;
  218.  
  219. while (1) {
  220.  
  221. printf("\n\n0 : exit\n");
  222.  
  223. printf("1 : Create Node\n");
  224.  
  225. printf("2 : Delete Node\n");
  226.  
  227. printf("3 : Insert Node\n");
  228.  
  229. printf("4 : View nodes\n");
  230.  
  231. printf("Select 0-4 : ");
  232.  
  233. check_num(&select, digit);
  234.  
  235.  
  236.  
  237. if (select == 0) {
  238.  
  239. return 0;
  240.  
  241. }
  242.  
  243. else if (select == 1) {
  244.  
  245. printf("Please enter a value: ");
  246.  
  247. check_num(&input_num, digit);
  248.  
  249. add(input_num);
  250.  
  251.  
  252.  
  253. }
  254.  
  255. else if (select == 2) {
  256.  
  257. show();
  258.  
  259. printf("\nPlease enter a value to clear : ");
  260.  
  261. check_num(&input_num, digit);
  262.  
  263. erase(input_num);
  264.  
  265.  
  266.  
  267. }
  268.  
  269. else if (select == 3) {
  270.  
  271.  
  272.  
  273. printf("\n|----------------------------------------------------------------------------------------------------------|");
  274.  
  275. printf("\n EX) first value:A second value:B third value:C ");
  276.  
  277. printf("\n EX) Please enter a value for the location you want to insert: B ");
  278.  
  279. printf("\n EX) Please enter a value to insert: AA ");
  280.  
  281. printf("\n EX)first value:A second value:B third value:AA fourth value:C ");
  282.  
  283. printf("\n|----------------------------------------------------------------------------------------------------------|\n\n\n\n");
  284.  
  285. show();
  286.  
  287. printf("\n\nPlease enter a value for the location you want to insert:");
  288.  
  289. check_num(&input_num, digit);
  290.  
  291. printf("Please enter a value to insert: ");
  292.  
  293. check_num(&input_num1, digit);
  294.  
  295. insert(input_num, input_num1);
  296.  
  297.  
  298.  
  299. }
  300.  
  301. else if (select == 4) {
  302.  
  303. show();
  304.  
  305. }
  306.  
  307. else {
  308.  
  309. printf("Only numbers between 0 and 4 can be entered.");
  310.  
  311. }
  312.  
  313. }
  314.  
  315. }
  316.  
  317.  
  318.  
  319. int check_num(int *result, int form) {
  320.  
  321.  
  322.  
  323. int i;
  324.  
  325.  
  326.  
  327. int j = 1;
  328.  
  329.  
  330.  
  331. int sign = 1;
  332.  
  333.  
  334.  
  335. int input_size;
  336.  
  337.  
  338.  
  339. char *str;
  340.  
  341.  
  342.  
  343. *result = 0;
  344.  
  345.  
  346.  
  347. str = (char *)malloc(sizeof(char) * form + 2);
  348.  
  349.  
  350.  
  351. while (1) {
  352.  
  353.  
  354.  
  355. sign = 1;
  356.  
  357.  
  358.  
  359. fgets(str, form + 2, stdin);
  360.  
  361.  
  362.  
  363. for (i = 0; i < form + 1; i++) {
  364.  
  365.  
  366.  
  367. if (str[i] == '\n') {
  368.  
  369.  
  370.  
  371. input_size = i;
  372.  
  373.  
  374.  
  375. break;
  376.  
  377.  
  378.  
  379. }
  380.  
  381.  
  382.  
  383. }
  384.  
  385.  
  386.  
  387. if (str[0] == 10) {
  388.  
  389.  
  390.  
  391. printf("Enter the number and press Enter. \n Please re-enter : ");
  392.  
  393.  
  394.  
  395. continue;
  396.  
  397.  
  398.  
  399. }
  400.  
  401.  
  402.  
  403. if (i == form + 1) {
  404.  
  405.  
  406.  
  407. printf("The input range has been exceeded. \n");
  408.  
  409.  
  410.  
  411. while (getchar() != '\n') {
  412.  
  413.  
  414.  
  415. }
  416.  
  417.  
  418.  
  419. printf("Please re-enter : ");
  420.  
  421.  
  422.  
  423. continue;
  424.  
  425.  
  426.  
  427. }
  428.  
  429.  
  430.  
  431.  
  432.  
  433.  
  434.  
  435. for (i = 0; i < input_size; i++) {
  436.  
  437.  
  438.  
  439. if (str[i] < 48 || str[i] > 57) {
  440.  
  441.  
  442.  
  443. if (str[i] != '\n') {
  444.  
  445.  
  446.  
  447. printf("Only integer greater than 0 can be entered.\n");
  448.  
  449.  
  450.  
  451. printf("Please re-enter : ");
  452.  
  453.  
  454.  
  455. sign = 0;
  456.  
  457.  
  458.  
  459. break;
  460.  
  461.  
  462.  
  463. }
  464.  
  465.  
  466.  
  467. }
  468.  
  469.  
  470.  
  471. }
  472.  
  473.  
  474.  
  475. if (sign == 0) {
  476.  
  477.  
  478.  
  479. continue;
  480.  
  481.  
  482.  
  483. }
  484.  
  485.  
  486.  
  487. for (i = 0; i < input_size; i++) {
  488.  
  489.  
  490.  
  491. *result = *result + (str[input_size - i - 1] - 48) * j;
  492.  
  493.  
  494.  
  495. j = j * 10;
  496.  
  497.  
  498.  
  499. }
  500.  
  501.  
  502.  
  503. break;
  504.  
  505.  
  506.  
  507. }
  508.  
  509.  
  510.  
  511. free(str);
  512.  
  513.  
  514.  
  515. return 0;
  516.  
  517.  
  518.  
  519. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement