apl/APL1.2/Aranger/truc.c
unknown d9949b5cb0 a
2022-01-14 06:54:18 +01:00

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);
}
}*/