Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*******************************************************************************************/
- P-Like
- /*******************************************************************************************/
- function del_testa(head,elem): nodo
- var head,prec: nodo
- var elem: integer
- begin
- if (head!=NULL) then
- prec=head.link;
- if (head.info=elem) then
- dealloca (head)
- del_testa := del_testa(prec,elem)
- else
- del_testa := head
- endif
- endif
- end
- function del_mezzo(head,elem): nodo
- var head,prec: nodo
- var elem: integer
- begin
- if (head!=NULL) then
- prec=head
- head=head.link
- if(head!=NULL) then
- if(head.info==elem) then
- dealloca (head)
- prec.link=head.link
- else
- prec=prec.link
- endif
- del_mezzo:=del_mezzo(prec, elem)
- endif
- endif
- end
- function delete_elem(head,elem): nodo
- var head: nodo
- var elem: integer
- begin
- head:=del_testa(head,elem)
- head:=del_mezzo(head,elem)
- delete_elem head
- end
- /*******************************************************************************************/
- C++:
- /*******************************************************************************************/
- nodo* del_testa(nodo* head,int elem){
- if(head){
- nodo* tmp=head->link;
- if(head->info==elem){
- //dealloca head;
- delete head;
- return del_testa(tmp,elem);
- }else{
- return head;
- }
- }
- return NULL; //<- serve per non far impazziare il mio mac,ignora pure.
- }
- void del_mezzo(nodo* head,int elem){
- if(head){
- nodo* prec=head;
- head=head->link;
- if(head){
- if(head->info==elem){
- delete head;
- prec->link=head->link;
- }else{
- prec=prec->link;
- }
- del_mezzo(prec, elem);
- }
- }
- }
- /*******************************************************************************************/
- Programma completo
- /*******************************************************************************************/
- #include <iostream>
- using namespace std;
- struct nodo{
- int info;
- nodo *link;
- };
- void add(nodo* head,int info){
- if(head->link==NULL){
- nodo* N = new nodo;
- N->info=info;
- N->link=NULL;
- head->link=N;
- }else{
- add(head->link, info);
- }
- }
- void display(nodo* head){
- while(head){
- cout<<head->info<<" ";
- head=head->link;
- }
- cout<<endl;
- }
- nodo* del_testa(nodo* head,int elem){
- if(head){
- nodo* tmp=head->link;
- if(head->info==elem){
- //dealloca head;
- delete head;
- return del_testa(tmp,elem);
- }else{
- return head;
- }
- }
- return NULL;
- }
- void del_mezzo(nodo* head,int elem){
- if(head){
- nodo* prec=head;
- head=head->link;
- if(head){
- if(head->info==elem){
- delete head;
- prec->link=head->link;
- }else{
- prec=prec->link;
- }
- del_mezzo(prec, elem);
- }
- }
- }
- int main(int argc, const char * argv[]) {
- nodo* P1 = new nodo;
- P1->info=4;
- P1->link=NULL;
- add(P1,4);
- add(P1,2);
- add(P1,4);
- add(P1,4);
- add(P1,2);
- add(P1,4);
- add(P1,4);
- display(P1);
- P1=del_testa(P1,4);
- display(P1);
- cout<<"===="<<endl;
- del_mezzo(P1,4);
- display(P1);
- }
Advertisement
Add Comment
Please, Sign In to add comment