Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- #include<conio.h>
- #include<stdbool.h>
- #include<iostream>
- using namespace std;
- #define MAX 6
- struct curs
- {
- int start,fin;
- };
- curs c[]={3,5,1,4,3,4,6,7,8,10,7,10};
- int n=MAX;
- void sortare()
- {
- for(int i=0; i<n-1; i++)
- {
- for(int j=i+1; j<n; j++)
- {
- if(c[i].start>c[j].start){
- curs temp=c[i];
- c[i]=c[j];
- c[j]=temp;
- }
- if(c[i].start==c[j].start && c[i].fin>c[j].fin)
- {
- curs temp=c[i];
- c[i]=c[j];
- c[j]=temp;
- }
- }
- }
- cout<<c[0].start<<"-"<<c[0].fin<<endl;
- int s=c[0].fin;
- for(int i=1; i<n; i++)
- {
- if(s<=c[i].start)
- {
- cout<<c[i].start<<"-"<<c[i].fin<<endl;
- s=c[i].fin;
- }
- }
- }
- int main()
- {
- sortare();
- getch();
- return 0;
- }
- #include<stdio.h>
- #include<stdlib.h>
- #include<conio.h>
- #include<math.h>
- typedef struct nod {
- int info;
- struct nod *urm;
- } Nod;
- Nod* prim;
- Nod* ultim;
- Nod* alocare() {
- return (Nod*) malloc(sizeof( Nod));
- }
- void creareListaVida() {
- prim = ultim = NULL;
- }
- // Adaugare la sfarsit.
- void adaugareNodSfarsit(int x) {
- Nod *p = alocare();
- p->info = x; //stocam
- p->urm = NULL;
- if(prim == NULL) { // Lista e vida
- prim = ultim = p;
- } else {
- ultim -> urm = p; // stabilim ca dupa ultimul element al listei se va afla p (nodul adaugat).
- ultim = p; // acum ultim va indica catre noul nod alocat.
- }
- }
- void afisareLista() {
- Nod* p; //p va parcurge (indica) pe rand elementele listei pornind de la primu.
- int i=0;
- p=prim; // pornesc de la prim
- while(p != NULL) { //atat timp cat nu am ajuns dupa ultim (dupa ultim e NULL).
- printf("valoarea nodului %d este %d\n",i + 1,p->info);
- p=p->urm;
- i++;
- }
- }
- //Adaugare un fata
- void adaugareNodFata(int x) {
- Nod *p=alocare();
- p->info=x;
- if(prim==NULL) {
- prim=ultim=p;
- p->urm=NULL;
- } else {
- p->urm=prim;
- prim=p;
- }
- }
- //Gasire element de pe pozitia i cu returneare adresei. Daca pozitia e invalida returam NULL.
- Nod* gasireElementIndex( int i) {
- Nod *p;
- int k;
- p=prim;
- if (i<=0) {
- return NULL;
- }
- k=1;
- while(p!=NULL && k<i) {
- p=p->urm;//avansam la urmatorul nod
- k++;
- }
- return p;//se returneaza adresa elementului i
- }
- void adaugare_Dupa_Element_i(int i, int x) {
- Nod *p,*q;
- //Cautam elementul dupa care vrem sa adauga
- p=gasireElementIndex(i);
- //testam dacaa am gasit elementul
- if(p!=NULL) {
- q=alocare();
- q->info=x;
- q->urm=p->urm;
- p->urm=q;
- if(q->urm==NULL) {
- ultim=q;
- }
- } else {
- printf("Eroare: Adaugarea nu se poate realiza pentru ca pozitia e incorecta");
- }
- }
- //cauta elementul x, returneaza adresa nodului in care a gasit valoarea, altfel, returneaza NULL
- Nod* cautareElement(int x) { //cautare dupa valoare
- Nod*p;
- p=prim;
- while(p!=NULL && p->info!=x) {
- p=p->urm;
- }
- return p;
- }
- //stergere nod dupa valoare
- void stergereElement(int x) {
- Nod *p,*q;
- q=NULL;
- p=prim;
- while(p!=NULL && p->info!=x) {
- q=p;
- p=p->urm;//trece la urmatorul element
- }
- if(p) { //!= NULL, a gasit elementul
- if(q!=NULL) {
- // cazul in care nu sterg primul element.
- q->urm=p->urm;//q trece si el la elem urmator
- free(p);
- if(q->urm==NULL) { //p a fost ultimul element, deci q devine ultimul element
- ultim=q;
- }
- } else {
- //stergem elementul de pe prima pozitie
- prim=p->urm;
- free(p);
- //ramanem cu lista vida?
- if(prim==NULL) {
- ultim=NULL;
- }
- }
- }
- }
- int main() {
- int n,i,x,j;
- Nod*p;
- creareListaVida();
- printf("nr Noduri=");
- scanf("%d",&n);
- for(i=0; i<n; i++) {
- //printf("Info: ");
- //scanf("%d", &x);
- adaugareNodSfarsit(i);
- }
- afisareLista();
- printf("Info: ");
- scanf("%d", &x);
- adaugareNodFata(x);
- printf("Info: ");
- scanf("%d", &x);
- adaugareNodSfarsit(x);
- afisareLista();
- printf("dati nodul dupa care se insereaza noul nod:\n");
- printf("j= ");
- scanf("%d",&j);
- printf("adaugam nod dupa elementul %d. \n",j);
- gasireElementIndex(j);
- printf("Info: ");
- scanf("%d", &x);
- adaugare_Dupa_Element_i(j,x);
- afisareLista();
- printf("dati valoarea cautata");
- scanf("%d",&x);
- p=cautareElement(x);
- if(p!=NULL) {
- printf("valoarea a fost gasita\n");
- getchar();
- stergereElement(x);
- } else {
- printf("valoarea nu a fost gasita\n");
- }
- afisareLista();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement