Advertisement
Guest User

Untitled

a guest
Jan 19th, 2019
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.13 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<conio.h>
  3. #include<string.h>
  4. #include<stdlib.h>
  5.  
  6.  
  7. typedef struct lista {
  8. char *nume;
  9. int cod;
  10.  
  11. struct lista *urm;
  12. }nod;
  13.  
  14. nod *rad = NULL;
  15.  
  16. nod *adaugare_la_coada(nod *prim, char *n, int cod) {
  17. nod *q;
  18. nod *nou = (nod*)malloc(sizeof(nod));
  19. nou->nume = (char*)malloc(strlen(n) + 1);
  20. nou->urm = NULL;
  21. strcpy(nou->nume, n);
  22. nou->cod = cod;
  23. q = prim;
  24. if (prim == NULL) {
  25. return nou;
  26. }
  27. else {
  28. while (q->urm != NULL) {
  29. q = q->urm;
  30. }
  31. q->urm = nou;
  32.  
  33. }
  34. return prim;
  35.  
  36. }
  37.  
  38.  
  39. nod * stergere(nod *prim,char *n){
  40. nod *q;
  41. nod *aux;
  42. q = prim;
  43. if (prim == NULL) {
  44. printf("Lista e goala\n");
  45.  
  46. }
  47. else
  48. {
  49. if (strcmp(prim->nume, n) == 0) {
  50. aux = prim;
  51. prim = prim->urm;
  52. free(aux);
  53. return prim;
  54. }
  55.  
  56. else {
  57. while (q->urm != NULL && (strcmp(q->urm->nume,n)!=0)) {
  58. q = q->urm;
  59.  
  60.  
  61. }
  62.  
  63. if (q->urm == NULL) {
  64. printf("S-a ajuns la finalul listei\n");
  65. }
  66. else {
  67. aux = q->urm;
  68. q->urm = q->urm->urm;
  69. free(aux);
  70. }
  71.  
  72. }
  73.  
  74. }
  75. return prim;
  76. }
  77.  
  78.  
  79.  
  80. nod *adaugare_la_inceput(nod *prim, char *n, int cod) {
  81. nod *q;
  82. nod *nou = (nod*)malloc(sizeof(nod));
  83. nou->nume = (char*)malloc(strlen(n) + 1);
  84. nou->urm = NULL;
  85. strcpy(nou->nume, n);
  86. nou->cod = cod;
  87. q = prim;
  88. if (prim == NULL) {
  89. return nou;
  90. }
  91. else {
  92. nou->urm = prim;
  93. return nou;
  94. }
  95.  
  96. }
  97.  
  98. nod *adaugare_nume_dat(nod *prim, char *n, int cod) {
  99. nod *q=prim;
  100. char sir[30];
  101. printf("Ce cauti: "); scanf("%s", sir);
  102. nod *nou = (nod*)malloc(sizeof(nod));
  103. nou->nume = (char*)malloc(strlen(n) + 1);
  104. strcpy(nou->nume, n);
  105. nou->cod = cod;
  106. if (prim == NULL) printf("Lista nula");
  107. else {
  108. while (q != NULL && strcmp(q->nume, sir) != 0) {
  109. q = q->urm;
  110. }
  111. if (q != NULL) {
  112. nou->urm = q->urm;
  113. q->urm = nou;
  114. return prim;
  115. }
  116. }
  117.  
  118. }
  119.  
  120.  
  121. void afisare(nod *prim) {
  122. nod *q;
  123. q = prim;
  124. while (q != NULL) {
  125. printf(" %s %d \n", q->nume, q->cod);
  126. q = q->urm;
  127. }
  128. }
  129.  
  130. nod * adaugare(nod *prim, char *n, int cod) {
  131. nod *q = prim;
  132. nod *nou = (nod*)malloc(sizeof(nod));
  133. nou->nume = (char*)malloc(strlen(n)+1);
  134. strcpy(nou->nume, n);
  135. nou->cod = cod;
  136. if (prim == NULL) {
  137. prim = nou;
  138. nou->urm = NULL;
  139. return prim;
  140. }
  141. else {
  142. if (strcmp(nou->nume, prim->nume) < 0) {
  143. nou->urm = prim;
  144. return nou;
  145. }
  146. else {
  147. while (q->urm != NULL && strcmp(nou->nume, q->urm->nume) > 0) {
  148. q = q->urm;
  149. }
  150. nou->urm = q->urm;
  151. q->urm = nou;
  152. }
  153. }
  154. return prim;
  155. }
  156.  
  157. void main() {
  158. int opt;
  159. char nume[20];
  160. int cod;
  161. do {
  162. printf("\n\n1.Citire\n2.Afisare\n3.Add nume dat\nAlege:");
  163. scanf("%d", &opt);
  164. switch (opt) {
  165. case 1:
  166. printf("Da nume:"); scanf("%s", nume);
  167. printf("Da cod:"); scanf("%d", &cod);
  168. rad = adaugare(rad, nume, cod);
  169. break;
  170. case 2:
  171. afisare(rad);
  172. break;
  173. case 3:
  174. printf("Da nume:"); scanf("%s", nume);
  175. printf("Da cod:"); scanf("%d", &cod);
  176.  
  177. rad = adaugare_nume_dat(rad, nume, cod);
  178. break;
  179. case 4:
  180. printf("Da nume:"); scanf("%s", nume);
  181. rad = stergere(rad, nume);
  182.  
  183. break;
  184. }
  185.  
  186. } while (opt != 0);
  187.  
  188. getch();
  189. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement