130 lines
1.8 KiB
C
130 lines
1.8 KiB
C
#include<stdio.h>
|
|
#include<stdlib.h>
|
|
#include<time.h>
|
|
|
|
int i=1;
|
|
|
|
typedef struct mail{
|
|
unsigned short entier;
|
|
struct mail *suivant;
|
|
}maillon;
|
|
|
|
|
|
|
|
|
|
void delLast(maillon* firstMail){
|
|
|
|
maillon* p=firstMail;
|
|
while(p->suivant!=NULL){
|
|
|
|
p=p->suivant;
|
|
}
|
|
|
|
printf("la valeur du dernier maillon est %d\n",p->entier );
|
|
}
|
|
|
|
|
|
|
|
|
|
maillon* creatMail(maillon* maillonPrecedent){
|
|
|
|
maillon* p=(maillon*) malloc(sizeof(maillon));
|
|
|
|
p->entier=i++;
|
|
p->suivant=NULL;
|
|
maillonPrecedent->suivant=p;
|
|
|
|
return p;
|
|
}
|
|
|
|
maillon* creatList(int nbElem){
|
|
|
|
int compteur=0;
|
|
maillon* p=(maillon*) malloc(sizeof(maillon));
|
|
maillon *firstMail=p;
|
|
|
|
for(compteur=0;compteur<nbElem;compteur++){
|
|
|
|
p->suivant=creatMail(p);
|
|
p=p->suivant;
|
|
}
|
|
return firstMail;
|
|
}
|
|
|
|
void readList(maillon* premierMaillon){
|
|
|
|
maillon* p=premierMaillon;
|
|
while(p!=NULL){;
|
|
printf("%d, ",p->entier);
|
|
p=p->suivant;
|
|
}
|
|
|
|
}
|
|
|
|
|
|
void delList(maillon* maillonX){
|
|
|
|
maillon* p;
|
|
|
|
while(maillonX!=NULL){
|
|
p=maillonX->suivant;
|
|
free(maillonX);
|
|
maillonX=p;
|
|
}
|
|
}
|
|
|
|
void delLastElem(maillon* premierMaillon){
|
|
|
|
maillon* p=premierMaillon;
|
|
maillon* saveLast;
|
|
|
|
while(p->suivant!=NULL){
|
|
saveLast=p;
|
|
p=p->suivant;
|
|
}
|
|
|
|
free(p);
|
|
saveLast->suivant=NULL;
|
|
}
|
|
|
|
void permCircu(maillon* premierMaillon){
|
|
|
|
maillon* p;
|
|
int x=premierMaillon->entier;
|
|
int y=premierMaillon->suivant->entier;
|
|
|
|
for(p=premierMaillon->suivant;p->suivant!=NULL;p=p->suivant){
|
|
|
|
p->entier=x;
|
|
x=y;
|
|
y=p->suivant->entier;
|
|
}
|
|
premierMaillon->entier=p->entier;
|
|
p->entier=x;
|
|
}
|
|
|
|
int main(void){
|
|
|
|
maillon* premierMaillon=creatList(10);
|
|
readList(premierMaillon);
|
|
permCircu(premierMaillon);
|
|
printf("permutation circulaire:\n");
|
|
readList(premierMaillon);
|
|
delList(premierMaillon);
|
|
return EXIT_SUCCESS;
|
|
}
|
|
|
|
|
|
/*
|
|
srand(time(NULL));
|
|
int t;
|
|
|
|
for (int l = 0; l < lim; ++l)
|
|
{
|
|
t = (rand()%888+1)+111;
|
|
printf("%d\n", t);
|
|
}
|
|
}*/
|
|
|
|
|