Advertisement
Denny707

es_1

Jun 13th, 2017
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.65 KB | None | 0 0
  1. /*******************************************************************************************/
  2. P-Like
  3. /*******************************************************************************************/
  4. function del_testa(head,elem): nodo
  5. var head,prec: nodo
  6. var elem: integer
  7. begin
  8. if (head!=NULL) then
  9. prec=head.link;
  10. if (head.info=elem) then
  11. dealloca (head)
  12. del_testa := del_testa(prec,elem)
  13. else
  14. del_testa := head
  15. endif
  16. endif
  17. end
  18.  
  19. function del_mezzo(head,elem): nodo
  20. var head,prec: nodo
  21. var elem: integer
  22. begin
  23. if (head!=NULL) then
  24. prec=head
  25. head=head.link
  26. if(head!=NULL) then
  27. if(head.info==elem) then
  28. dealloca (head)
  29. prec.link=head.link
  30. else
  31. prec=prec.link
  32. endif
  33. del_mezzo:=del_mezzo(prec, elem)
  34. endif
  35. endif
  36. end
  37.  
  38. function delete_elem(head,elem): nodo
  39. var head: nodo
  40. var elem: integer
  41. begin
  42. head:=del_testa(head,elem)
  43. head:=del_mezzo(head,elem)
  44. delete_elem head
  45. end
  46. /*******************************************************************************************/
  47. C++:
  48. /*******************************************************************************************/
  49. nodo* del_testa(nodo* head,int elem){
  50. if(head){
  51. nodo* tmp=head->link;
  52. if(head->info==elem){
  53. //dealloca head;
  54. delete head;
  55. return del_testa(tmp,elem);
  56. }else{
  57. return head;
  58. }
  59.  
  60. }
  61. return NULL; //<- serve per non far impazziare il mio mac,ignora pure.
  62. }
  63.  
  64. void del_mezzo(nodo* head,int elem){
  65. if(head){
  66. nodo* prec=head;
  67. head=head->link;
  68. if(head){
  69. if(head->info==elem){
  70. delete head;
  71. prec->link=head->link;
  72. }else{
  73. prec=prec->link;
  74. }
  75. del_mezzo(prec, elem);
  76. }
  77. }
  78. }
  79.  
  80.  
  81. /*******************************************************************************************/
  82. Programma completo
  83. /*******************************************************************************************/
  84. #include <iostream>
  85. using namespace std;
  86.  
  87. struct nodo{
  88. int info;
  89. nodo *link;
  90. };
  91.  
  92. void add(nodo* head,int info){
  93. if(head->link==NULL){
  94. nodo* N = new nodo;
  95. N->info=info;
  96. N->link=NULL;
  97. head->link=N;
  98. }else{
  99. add(head->link, info);
  100. }
  101. }
  102.  
  103. void display(nodo* head){
  104. while(head){
  105. cout<<head->info<<" ";
  106. head=head->link;
  107. }
  108. cout<<endl;
  109. }
  110.  
  111. nodo* del_testa(nodo* head,int elem){
  112. if(head){
  113. nodo* tmp=head->link;
  114. if(head->info==elem){
  115. //dealloca head;
  116. delete head;
  117. return del_testa(tmp,elem);
  118. }else{
  119. return head;
  120. }
  121.  
  122. }
  123. return NULL;
  124. }
  125.  
  126. void del_mezzo(nodo* head,int elem){
  127. if(head){
  128. nodo* prec=head;
  129. head=head->link;
  130. if(head){
  131. if(head->info==elem){
  132. delete head;
  133. prec->link=head->link;
  134. }else{
  135. prec=prec->link;
  136. }
  137. del_mezzo(prec, elem);
  138. }
  139. }
  140. }
  141.  
  142.  
  143. int main(int argc, const char * argv[]) {
  144. nodo* P1 = new nodo;
  145. P1->info=4;
  146. P1->link=NULL;
  147. add(P1,4);
  148. add(P1,2);
  149. add(P1,4);
  150. add(P1,4);
  151. add(P1,2);
  152. add(P1,4);
  153. add(P1,4);
  154.  
  155. display(P1);
  156. P1=del_testa(P1,4);
  157. display(P1);
  158.  
  159.  
  160.  
  161. cout<<"===="<<endl;
  162. del_mezzo(P1,4);
  163. display(P1);
  164. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement