Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //h
- #ifndef L3P1_H
- #define L3P1_H
- #pragma once
- #include<iostream>
- #include<assert.h>
- using namespace std;
- //int *p,*q;
- typedef int Atom;
- typedef struct Nod{
- Atom data;
- Nod*succ,*pred;
- }*PNod;
- typedef PNod ListaD;
- void Eliberare(ListaD &l);
- int Meniu(void);
- int CitireInt(char*msg);
- void Sterge(ListaD &l,int k); //Atom a
- void InsPoz(ListaD &l,Atom,int k);
- void Afisare(ListaD l);
- void InsFata(ListaD &l,Atom a);
- #endif
- //l3p1.c
- #include "l3p1.h"
- void InsFata(ListaD &l,Atom a)
- {
- PNod p=new Nod;
- assert (p);
- p->data=a;
- p->pred=l;
- p->succ=0;
- if(l)
- l->pred=p;
- l=p;
- }
- void Afisare(ListaD l)
- {
- while(l)
- {
- cout<<l->data<<" ";
- l=l->succ;
- }
- cout<<endl;
- }
- void InsPoz(ListaD &l,Atom a,int k) //atom a
- {
- if(k<0)
- return;
- if(!k)
- InsFata(l,a);
- else
- {
- PNod p=l;
- while(p&&(k>1))
- {
- p=p->succ;
- k--;
- }
- if(p)
- {
- PNod q=new Nod;
- assert(q);
- q->data=a;
- q->pred=p;
- q->succ=p->succ;
- p->succ=q;
- if(q->succ)q->succ->pred=q;
- }
- }
- }
- void Sterge(ListaD &l,int k) //Atom a
- {
- PNod p,q;
- if((k<0)||(!l))
- return;
- if(!k)
- {
- PNod q=l;
- l=l->succ;
- if(l)
- l->pred=0;
- delete(q);
- }
- else
- {
- //PNod p=1;
- while((l)||(k>1))
- p=p->succ;
- k-1;
- }
- if(p)
- {
- q=p->succ;
- if(q)
- {
- p->succ=q->succ;
- if(q->succ)
- {
- q->succ->pred=p;
- delete q;
- }
- }
- }
- }
- int CitireInt(char*msg)
- {
- int rez,ok;
- do
- {
- cout<<msg<<endl;
- cin>>rez;
- if(cin.fail())
- {
- ok=0;
- cin.clear();//sterge bitul de eroare
- cin.ignore(80,'\n');
- }
- else ok=1;
- }while(!ok);
- return rez;
- }
- int Meniu(void)
- {
- int opt;
- do
- {
- cout<<"0 - Iesire\n1 - Inserare Fata\n2 - Inserare pe Pozitie\4 - Stergere\n";
- opt=CitireInt("Alegeti 0-4");
- }while((opt<0)||(opt>4));
- return opt;
- }
- void Eliberare(ListaD &l)
- {
- PNod p;//
- while(l)
- {
- PNod p=l;
- l=l->succ;
- delete p;
- }
- }
- //main
- #include"l3p1.h"
- int main()
- {
- ListaD l=0;
- int opt,k;
- Atom a;
- do
- {
- opt=Meniu();
- switch(opt)
- {
- case 0:
- Eliberare(l);
- break;
- case 1:
- a=(Atom)
- CitireInt("val = ");
- InsFata(l,a);
- break;
- case 2:
- Afisare(l);
- case 3:
- a=CitireInt("val=");
- InsPoz(l,a,k);
- break;
- case 4:
- k=CitireInt("Poz");
- Sterge(l,k-1);
- break;
- }
- //'k=citirePoz()
- }while(opt);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement