Guest User

Untitled

a guest
Jul 20th, 2018
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.40 KB | None | 0 0
  1. Solmu *poista_muisti(Solmu *pAlku)
  2. {
  3. Solmu *pSolmu;
  4. Solmu *pSolmu2;
  5. Solmu *pSolmu3;
  6. int i, j, MuistiAlue, lkm;
  7. printf("\nVARAUS \tKOKO\tSISÄLTÖ\n");
  8. while(pSolmu != NULL)
  9. {
  10. printf("\n%6d \t%ld\t%s", i + 1, pSolmu->iMuistialue, (char *) pSolmu->chTeksti);
  11. lkm++;
  12. i++;
  13. pSolmu = pSolmu->pSeuraava;
  14. }
  15. printf("\nValitse muistialue, joka vapautetaan.\n");
  16. printf("> ");
  17. scanf("%d", &MuistiAlue);
  18. if(MuistiAlue < 1 || MuistiAlue > lkm)
  19. {
  20. printf("\nMuistialue ei ole käytössä.\n");
  21. }
  22. else if(lkm == 1) /*Ainut ja ensimmäinen*/
  23. {
  24. pSolmu = pAlku;
  25. free(pSolmu);
  26. pAlku = NULL;
  27. return pAlku;
  28. }
  29. else if(MuistiAlue == lkm) /* Viimeinen */
  30. {
  31. pSolmu = pAlku;
  32. for(j = 1; j < MuistiAlue - 1; j++)
  33. {
  34. pSolmu = pSolmu->pSeuraava;
  35. }
  36. pSolmu2 = pSolmu->pSeuraava;
  37. pSolmu->pSeuraava = NULL;
  38. while(pSolmu != NULL)
  39. {
  40. pSolmu = pSolmu->pSeuraava;
  41. }
  42. free(pSolmu2);
  43. return pAlku;
  44. }
  45. else /* Siirrytään ennen poistettavaan */
  46. {
  47. pSolmu = pAlku;
  48. for(j = 1; j < MuistiAlue - 1; j++)
  49. pSolmu = pSolmu->pSeuraava;
  50. }
  51. if(MuistiAlue == 1) /* Ensimmäinen */
  52. {
  53. pSolmu = pAlku;
  54. pSolmu2 = pSolmu->pSeuraava;
  55. pAlku = pSolmu2;
  56. free(pSolmu);
  57. return pAlku;
  58. }
  59. else /* Keskeltä */
  60. {
  61. pSolmu2 = pSolmu->pSeuraava;
  62. pSolmu3 = pSolmu2->pSeuraava;
  63. pSolmu->pSeuraava = pSolmu3;
  64. free(pSolmu2);
  65. }
  66. return pAlku;
  67. }
Add Comment
Please, Sign In to add comment