A
B
C
Ç
D
E
F
G
Ğ
H
I
İ
J
K
L
M
N
O
P
R
S
Ş
T
U
Ü
V
Y
Z
Q
W
X
+ Ekle
Linkli Listeler İle İşlem Yapmak

Linkli Listeler İle İşlem Yapmak
Linkli liste ile elinizde bulunan orijinal dizi ile işlem yapmazsınız. o dizinin her elemanı için bir link oluşturup işlemleri bunun üzerinden yaparsınız.

#include
#include

int menu();
void dizileriAl(int [],int,int []);
void pointerDiziBul(int [],int,int []);
void diziOlustur();
void diziGoster();
void elemanAra();
void elemanEkle();
void elemanSil();

int main() {
int secim;
secim=menu();
while(secim!=6) {
switch (secim) {
case 1:diziOlustur();break;
case 2:diziGoster();break;
case 3:elemanAra();break;
case 4:elemanEkle();break;
case 5:elemanSil();break;
}
secim=menu();
}
return 0;
}

//menu fonksiyonu.....................................................
int menu() {



int secim;
  do {
   printf("\n");
printf("\tdizi oluşturun          ....1\n");
printf("\tdiziyi ekrana yazdırma  ....2\n");
printf("\tdizide eleman arama     ....3\n");
printf("\tdiziye eleman ekleme    ....4\n");
printf("\tdiziden eleman silme    ....5\n");
printf("\tçıkış                   ....6\n");
printf("\t\t\tseçiminiz : ");scanf("%d",&secim);
  }
  while(!(secim>0 && secim<7));
  return secim;
}

//pointerDiziBul fonksiyonu..................................................
void pointerDiziBul(int d[],int n,int p[]) {
int i,j,k,x;

p[0]=1;p[1]=-1;

for(i=2;i<=n;i++) {
k=0; j=p[0]; x=d[i-1];
while((j>0) && (x>d[j-1])) {
k=j; j=p[j];
}
p[k]=i; p[i]=j;
}

printf("\nverdiğiniz dizinin pointer dizisi budur :\n");
for(i=0;i<=n;i++) {
printf("%d\t",p[i]);

}
printf("\n");

}
//diziOlustur fonksiyonu......................................................
void diziOlustur() {
int d[20],p[21];
int i,j,x,k,n;
printf("dizinin boyutunu giriniz : ");scanf("%d",&n);
for(i=0;iprintf("%d. eleman : ",i+1);scanf("%d",&d[i]);
}
pointerDiziBul(d,n,p);
}

//diziGoster fonksiyonu.......................................................
void diziGoster() {
int d[20],p[21];
int n,j;

printf("dizinin boyutunu giriniz : ");scanf("%d",&n);

dizileriAl(d,n,p);

j=p[0];
printf("\naranan dizi budur : \n");
while(j>0) {
printf("%d\t",d[j-1]);
j=p[j];
}
}

//elemanAra fonksiyonu.......................................................
void elemanAra() {
int d[20],p[21];
int n,j,aranan;

printf("dizinin boyutunu giriniz : ");scanf("%d",&n);

dizileriAl(d,n,p);

printf("\nşimdi aranacak elemanı giriniz : ");scanf("%d",&aranan);

j=p[0];

while((j>0) && (aranan!=d[j-1])) {
j=p[j];
}
if(j>0) {
printf("\naranan %d sayısı %d. sıradadır...\n\n",aranan,j);
}
else
printf("\n\taranan %d sayısı dizide mevcut değildir...\n\n");
}

//elemanEkle fonksiyonu........................................................
void elemanEkle() {
int d[20],p[21];
int i,j,k,n,eklenecek;
printf("dizinin boyutunu giriniz : ");scanf("%d",&n);

dizileriAl(d,n,p);

printf("şimdi diziye eklenecek elemanı giriniz : ");scanf("%d",&eklenecek);

k=0;
j=p[0];

while(eklenecek>d[j-1]) {
k=j; j=p[j];
}
n++;
d[n-1]=eklenecek;
p[n]=j;
p[k]=n;

printf("\nyeni pointer dizisi :\n");
for(i=0;i<=n;i++) {
printf("%d\t",p[i]);
}
printf("\n");
}


//elemanSil fonksiyonu.............................................................
void elemanSil() {
int d[20],p[21];
int i,j,k,n,silinecek;
printf("dizinin boyutunu giriniz : ");scanf("%d",&n);

dizileriAl(d,n,p);

printf("şimdi diziye silinecek elemanı giriniz : ");scanf("%d",&silinecek);

j=p[0]; k=0;

while((j>0) && (silinecek!=d[j-1])) {
k=j; j=p[j];
}
  p[k]=p[j]; p[j]=-99; //silinen eleman için pointer diziye -9 yazalım..

printf("\nyeni pointer dizisi : \n");
for(i=0;i<=n;i++) {
printf("%d\t",p[i]);
}
}

//dizi ve pointerDizi almak için kullanılan fonksiyon.................................
void dizileriAl(int d[],int n,int p[]) {
int i;

for(i=0;iprintf("%d. eleman : ",i+1);scanf("%d",&d[i]);
}

pointerDiziBul(d,n,p);
}









  Ad Soyad
  Yorum