Advertisement
Guest User

Untitled

a guest
Feb 21st, 2017
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.99 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <Stdlib.h>
  3. #include <string.h>
  4.  
  5. struct alkio {
  6. char sNimi[31];
  7. struct alkio *pSeuraava;
  8. };
  9. typedef struct alkio lista;
  10.  
  11. lista *SolmuLisaa(lista *pA){
  12. lista *ptr, *p;
  13. char nimi[31];
  14.  
  15. /*Muistin varaus*/
  16. if ((ptr=(lista*)malloc(sizeof(lista)))==NULL){
  17. perror("Muistin varaus epäonnistui");
  18. exit(1);
  19. }
  20. /*Uuden alkion arvojen määrittäminen*/
  21. getchar();
  22. printf("Anna lisättävä nimi: ");
  23. fgets(nimi, 31, stdin);
  24. strcpy(ptr->sNimi, nimi);
  25. ptr->pSeuraava = NULL;
  26.  
  27. /*Uuden alkion lisääminen listaan*/
  28. if (pA == NULL) {
  29. pA = ptr;
  30. } else {
  31. p = pA;
  32. while (p->pSeuraava != NULL)
  33. p = p->pSeuraava;
  34. p->pSeuraava = ptr;
  35. }
  36. return pA;
  37. }
  38.  
  39. lista *Tulosta(lista *pA){
  40. lista *ptr = pA;
  41. int i=1;
  42.  
  43. if (ptr != NULL){
  44. printf("ALKIO\tNIMI\n");
  45. while (ptr != NULL){
  46. printf("%d\t%s",i++, ptr->sNimi);
  47. ptr = ptr->pSeuraava;
  48. }
  49. }
  50. return pA;
  51. }
  52.  
  53. lista *Tyhjenna(lista *pA) {
  54. lista *ptr = pA;
  55.  
  56. while (ptr != NULL) {
  57. pA=ptr->pSeuraava;
  58. free(ptr);
  59. ptr=pA;
  60. }
  61. return pA;
  62. }
  63.  
  64. lista *poista(lista *pA,int value) {
  65. int i=0;
  66. lista *currP, *prevP;
  67. prevP = NULL;
  68.  
  69.  
  70. while (currP != NULL) {
  71. i++;
  72. if (i == value) {
  73. printf("%d",i);
  74. if (prevP == NULL)
  75. pA = currP->pSeuraava;
  76.  
  77. else {
  78. prevP->pSeuraava = currP->pSeuraava;
  79.  
  80. }
  81.  
  82. free(currP);
  83.  
  84.  
  85. }
  86. return pA;
  87. }
  88. }
  89.  
  90.  
  91.  
  92.  
  93.  
  94. int main(void) {
  95. lista *pAlku = NULL;
  96. int i;
  97. int nro;
  98.  
  99.  
  100. int valinta;
  101. do {
  102. printf("Valitse toiminto valikosta:\n"
  103. "1) Lisää alkio listan loppuun\n"
  104. "2) Poista valittu alkio\n"
  105. "3) Tulosta listan tiedot\n"
  106. "4) Tyhjennä lista\n"
  107. "0) Lopeta\n"
  108. "Valintasi: ");
  109. scanf("%d", &valinta);
  110. switch (valinta){
  111. case(1):
  112. for (i=0; i<1; i++){
  113. pAlku = SolmuLisaa(pAlku);
  114. }
  115. break;
  116.  
  117. case(2):
  118. printf("Tiedostossa olevat nimet :\n");
  119. Tulosta(pAlku);
  120. printf("Anna poistettava nimi:\n");
  121. scanf("%d",&nro);
  122. pAlku=poista(pAlku,nro);
  123. break;
  124. case(3):
  125. printf("Tiedostossa olevat nimet:\n");
  126. Tulosta(pAlku);
  127. break;
  128. case(4):
  129. pAlku = Tyhjenna(pAlku);
  130. break;
  131. case(0):
  132. pAlku = Tyhjenna(pAlku);
  133. printf("Kiitos ohjelman käytöstä!\n");
  134. break;
  135. default:
  136. printf("Tuntematon valinta.\n");
  137. break;
  138.  
  139. }
  140. }while (valinta!=0);
  141.  
  142. return 0;
  143. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement