Programme 1:
#include <stdio.h>
#include <stdlib.h>
typedef struct objet {int inf;char sentinel; struct objet *suiv;} tplace;
tplace *tete,*ptr;
int i,n;
int main(){
printf(" Nbr elem : ");
scanf("%d",&n);
if(n>0){
tete=malloc(sizeof(tplace));
if(tete){
printf(" elem 1: ");
scanf("%d",&(tete->inf));
tete->sentinel='@';
tete->suiv=NULL;
}else{printf(" memoire insuf, arret!"); return 1;}
};
ptr=tete;
for(i=1;i<n;i++){
ptr->suiv=malloc(sizeof(tplace));
if(ptr->suiv){
ptr=ptr->suiv;
printf(" elem %d: ",i+1);
scanf("%d",&(ptr->inf));
ptr->sentinel='@';
ptr->suiv=NULL;
}else{printf(" memoire insuf, arret!"); return 1;}
}
printf("tete:");
while(tete!=0){
ptr=tete;
tete=tete->suiv;
printf("[%d]-->",ptr->inf);
ptr->suiv=0;
free(ptr);
ptr=0;
}
printf("<NUL>");
return 0;
}
Programme 2:
#include <stdio.h>
#include <stdlib.h>
typedef struct objet {int inf;char sentinel;struct objet *suiv;} tPlace;
int creatList(tPlace **,int),
affichLiberList(tPlace *);
tPlace *tete,*ptr;
int n;
int main()
{
printf(" Nbr d'elements a creer : ");
scanf("%d",&n);
creatList(&tete,n);
affichLiberList(tete);
tete=NULL;
return 0;
}
//Affichage et liberation;
int affichLiberList(tPlace *tete){
printf("tete:");
while(tete){
ptr=tete;
tete=tete->suiv;
printf("[%d]-->",ptr->inf);
ptr->suiv=0;
free(ptr);
ptr=0;
}
printf("<NUL>");
return 0;
}
//creation
int creatList(tPlace **tete,int n){
int i;
if(n>0){
*tete=malloc(sizeof(tPlace));
if(*tete){
printf(" elem 1: ");
scanf("%d",&((*tete)->inf));
(*tete)->sentinel='@';
(*tete)->suiv=NULL;
}
else{printf(" memoire insuf, arret!"); return 1;}
}
ptr=*tete;
for(i=1;i<n;i++){
ptr1=ptr->suiv=malloc(sizeof(tPlace));
if(ptr->suiv){
ptr=ptr->suiv;
printf(" elem %d: ",i+1);
scanf("%d",&(ptr->inf));
ptr->sentinel='@';
ptr->suiv=NULL;
}
else{printf(" memoire insuf, arret!"); return 1;}
}
return 0;
}
Programme 3:
int creatList(tPlace **,int),
affichList(tPlace *),
inserWrong(tPlace *,int val,int pos);
tPlace *tete; int n,val,pos;
int main(){
printf(" Nbr d'elements a creer : ");
scanf("%d",&n);
printf(" Val a inserer : ");
scanf("%d",&val);
printf(" Position : ");
scanf("%d",&pos);
creatList(&tete,n);
inserWrong(tete,val,pos);
affichList(tete);
tete=NULL;
return 0;
}
int inserWrong(tPlace *tete,int val,int pos){
tPlace *ptr,*ptr1,*ptrVal; int comp=1;
while(tete && (comp<pos)){
ptr=tete;
tete=tete->suiv;
comp++;
}
ptrVal=(tPlace *)malloc(sizeof(tPlace));
if(ptrVal){
ptrVal->inf=val;
ptrVal->sentinel='@';
ptr->suiv=ptrVal;
ptrVal->suiv=tete;
}else{printf("L'insertion a echouee, memoire insuf"); return 1;}
return 0;
}
//Affichage
int affichList(tPlace *tete){
//A definir
}
//creation
int creatList(tPlace **tete,int n){
//voir programme 2
}
Programme 4: creatList() evitant int**
(de toute façon vous devez maitriser int** car des fois incontournable)
#include <stdio.h>
#include <stdlib.h>
typedef struct objet {int inf;char sentinel;struct objet *suiv;} tPlace;
int affichList(tPlace *);
tPlace *creatList(tPlace *,int);
tPlace *tete; int n,val,pos;
int main(){
printf(" Nbr d'elements a creer : ");
scanf("%d",&n);
tete=creatList(tete,n);
affichList(tete);
tete=NULL;
return 0;
}
int affichList(tPlace *tete){
//a definir
}
//creation
tPlace *creatList(tPlace *tete,int n){
tPlace *ptr; int i;
tete=0;
if(n>0){
tete=malloc(sizeof(tPlace));
if(tete){
printf(" elem 1: ");
scanf("%d",&(tete->inf));
tete->sentinel='@';
tete->suiv=NULL;
}
else{printf(" memoire insuf, arret!"); return NULL;}
}
ptr=tete;
for(i=1;i<n;i++){
ptr->suiv=malloc(sizeof(tPlace));
if(ptr->suiv){
ptr=ptr->suiv;
printf(" elem %d: ",i+1);
scanf("%d",&(ptr->inf));
ptr->sentinel='@';
ptr->suiv=NULL;
}
else{printf(" memoire insuf, arret!"); return NULL;}
}
return tete;
}
#include <stdio.h>
#include <stdlib.h>
typedef struct objet {int inf;char sentinel; struct objet *suiv;} tplace;
tplace *tete,*ptr;
int i,n;
int main(){
printf(" Nbr elem : ");
scanf("%d",&n);
if(n>0){
tete=malloc(sizeof(tplace));
if(tete){
printf(" elem 1: ");
scanf("%d",&(tete->inf));
tete->sentinel='@';
tete->suiv=NULL;
}else{printf(" memoire insuf, arret!"); return 1;}
};
ptr=tete;
for(i=1;i<n;i++){
ptr->suiv=malloc(sizeof(tplace));
if(ptr->suiv){
ptr=ptr->suiv;
printf(" elem %d: ",i+1);
scanf("%d",&(ptr->inf));
ptr->sentinel='@';
ptr->suiv=NULL;
}else{printf(" memoire insuf, arret!"); return 1;}
}
printf("tete:");
while(tete!=0){
ptr=tete;
tete=tete->suiv;
printf("[%d]-->",ptr->inf);
ptr->suiv=0;
free(ptr);
ptr=0;
}
printf("<NUL>");
return 0;
}
Programme 2:
#include <stdio.h>
#include <stdlib.h>
typedef struct objet {int inf;char sentinel;struct objet *suiv;} tPlace;
int creatList(tPlace **,int),
affichLiberList(tPlace *);
tPlace *tete,*ptr;
int n;
int main()
{
printf(" Nbr d'elements a creer : ");
scanf("%d",&n);
creatList(&tete,n);
affichLiberList(tete);
tete=NULL;
return 0;
}
//Affichage et liberation;
int affichLiberList(tPlace *tete){
printf("tete:");
while(tete){
ptr=tete;
tete=tete->suiv;
printf("[%d]-->",ptr->inf);
ptr->suiv=0;
free(ptr);
ptr=0;
}
printf("<NUL>");
return 0;
}
//creation
int creatList(tPlace **tete,int n){
int i;
if(n>0){
*tete=malloc(sizeof(tPlace));
if(*tete){
printf(" elem 1: ");
scanf("%d",&((*tete)->inf));
(*tete)->sentinel='@';
(*tete)->suiv=NULL;
}
else{printf(" memoire insuf, arret!"); return 1;}
}
ptr=*tete;
for(i=1;i<n;i++){
ptr1=ptr->suiv=malloc(sizeof(tPlace));
if(ptr->suiv){
ptr=ptr->suiv;
printf(" elem %d: ",i+1);
scanf("%d",&(ptr->inf));
ptr->sentinel='@';
ptr->suiv=NULL;
}
else{printf(" memoire insuf, arret!"); return 1;}
}
return 0;
}
Programme 3:
int creatList(tPlace **,int),
affichList(tPlace *),
inserWrong(tPlace *,int val,int pos);
tPlace *tete; int n,val,pos;
int main(){
printf(" Nbr d'elements a creer : ");
scanf("%d",&n);
printf(" Val a inserer : ");
scanf("%d",&val);
printf(" Position : ");
scanf("%d",&pos);
creatList(&tete,n);
inserWrong(tete,val,pos);
affichList(tete);
tete=NULL;
return 0;
}
int inserWrong(tPlace *tete,int val,int pos){
tPlace *ptr,*ptr1,*ptrVal; int comp=1;
while(tete && (comp<pos)){
ptr=tete;
tete=tete->suiv;
comp++;
}
ptrVal=(tPlace *)malloc(sizeof(tPlace));
if(ptrVal){
ptrVal->inf=val;
ptrVal->sentinel='@';
ptr->suiv=ptrVal;
ptrVal->suiv=tete;
}else{printf("L'insertion a echouee, memoire insuf"); return 1;}
return 0;
}
//Affichage
int affichList(tPlace *tete){
//A definir
}
//creation
int creatList(tPlace **tete,int n){
//voir programme 2
}
Programme 4: creatList() evitant int**
(de toute façon vous devez maitriser int** car des fois incontournable)
#include <stdio.h>
#include <stdlib.h>
typedef struct objet {int inf;char sentinel;struct objet *suiv;} tPlace;
int affichList(tPlace *);
tPlace *creatList(tPlace *,int);
tPlace *tete; int n,val,pos;
int main(){
printf(" Nbr d'elements a creer : ");
scanf("%d",&n);
tete=creatList(tete,n);
affichList(tete);
tete=NULL;
return 0;
}
int affichList(tPlace *tete){
//a definir
}
//creation
tPlace *creatList(tPlace *tete,int n){
tPlace *ptr; int i;
tete=0;
if(n>0){
tete=malloc(sizeof(tPlace));
if(tete){
printf(" elem 1: ");
scanf("%d",&(tete->inf));
tete->sentinel='@';
tete->suiv=NULL;
}
else{printf(" memoire insuf, arret!"); return NULL;}
}
ptr=tete;
for(i=1;i<n;i++){
ptr->suiv=malloc(sizeof(tPlace));
if(ptr->suiv){
ptr=ptr->suiv;
printf(" elem %d: ",i+1);
scanf("%d",&(ptr->inf));
ptr->sentinel='@';
ptr->suiv=NULL;
}
else{printf(" memoire insuf, arret!"); return NULL;}
}
return tete;
}