Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- typedef struct liste liste;
- struct liste{
- int value;
- liste* suivant;
- };
- liste* creer(){
- liste *l;
- l=malloc(sizeof(liste));
- l->suivant=NULL;
- return l;
- }
- void adjt(liste **l,int i){
- liste *temp;
- temp=creer();
- temp->value=i;
- if(!(*l))
- *l=temp;
- else{
- temp->suivant=(*l);
- (*l)=temp;
- }
- }
- void adjq(liste **l,int i){
- liste *temp;
- temp=creer();
- temp->value=i;
- if(!(*l))
- *l=temp;
- else{
- liste *courant=*l;
- while(courant->suivant)
- courant=courant->suivant;
- courant->suivant=temp;
- }
- }
- void suppt(liste **l){
- if(*l){
- liste *courant =*l;
- *l=(*l)->suivant;
- free (courant);
- }
- }
- void suppq(liste **l){
- if(*l){
- if(!(*l)->suivant){
- free(*l);
- *l=NULL;
- }
- else{
- liste *courant =(*l);
- while(courant->suivant->suivant)
- courant=courant->suivant;
- free (courant->suivant);
- courant->suivant=NULL;
- }
- }
- }
- liste* tri(liste *l){
- liste *new=l;
- liste *courant=l->suivant;
- if(l){
- new->suivant=NULL;
- liste *temp1,*temp2;
- int c=0;
- while(courant){
- if(courant->value<=new->value){
- temp1=courant->suivant;
- courant->suivant=new;
- new=courant;
- courant=temp1;
- }
- else if(!new->suivant){
- new->suivant=courant;
- courant=courant->suivant;
- new->suivant->suivant=NULL;
- }
- else{
- temp2=new;
- while(temp2->suivant){
- if(temp2->suivant->value>courant->value){
- temp1=courant->suivant;
- courant->suivant=temp2->suivant;
- temp2->suivant=courant;
- courant=temp1;
- break;
- }
- else{
- temp2=temp2->suivant;
- }
- }
- if(!temp2->suivant){
- temp1=courant->suivant;
- courant->suivant=NULL;
- temp2->suivant=courant;
- courant=temp1;
- }
- }
- }
- }
- return new;
- }
- int length(liste *l){
- int i=0;
- while(l){
- i++;
- l=l->suivant;
- }
- return i;
- }
- void affiche(liste *l){
- while(l){
- printf("->%d //%p\n",l->value,l);
- l=l->suivant;
- }
- }
- int main(){
- liste *l;
- adjt(&l,5);
- adjq(&l,1);
- adjq(&l,5);
- adjq(&l,2);
- l=tri(l);
- affiche(l);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment