Yazar |
|
altuko
banlandı
Kayıt: 05.02.2006 |
|
indigestible yazdi | çooook teşekkürleeerrr!!
çift bağlı listeden tek bağlıya olanı da koyabilirsen daa da süper olcak..
ya gerçekten çok saol..geçersem sayende geçicem heralde;)
|
ÇiftBağlıdan tek bağlıya...tekbağlıdan çift bağlıya olanla aynı mantık.o yüzden koymamıştım.....kolay gelsin herkese
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct TekBagli
{
char name[20];
struct TekBagli *next;
};
struct CiftBagli
{
char name[20];
struct CiftBagli *next;
struct CiftBagli *before;
};
typedef struct TekBagli Tekbagli;
typedef struct TekBagli* TekBagliPtr;
typedef struct CiftBagli CiftBagli;
typedef struct CiftBagli* CiftBagliPtr;
void insertTekBagli(TekBagliPtr *tekStart,char *Tname)
{
if((*tekStart) == NULL)
{
(*tekStart) = (TekBagliPtr)malloc(sizeof(TekBagli));
strcpy((*tekStart)->name,Tname);
(*tekStart)->next = NULL;
}
else
insertTekBagli(&((*tekStart)->next),Tname);
}
void printTekBagli(TekBagliPtr tekStart)
{
if(tekStart != NULL)
{
printf("%s->",tekStart->name);
printTekBagli(tekStart->next);
}
}
void printCiftBagli(CiftBagliPtr ciftStart)
{
if(ciftStart != NULL)
{
printf("%s->",ciftStart->name);
printCiftBagli(ciftStart->next);
}
}
void insertCiftBagli(CiftBagliPtr *ciftStart,char *Cname)
{
CiftBagliPtr currentPtr,previousPtr,newPtr;
newPtr = (CiftBagliPtr)malloc(sizeof(CiftBagli));
strcpy(newPtr->name,Cname);
currentPtr = (*ciftStart);
previousPtr = NULL;
while(currentPtr != NULL &&(strcmp(currentPtr->name,Cname) < 0) )
{
previousPtr = currentPtr;
currentPtr = currentPtr->next;
}
if(previousPtr == NULL)
{
(*ciftStart) = newPtr;
newPtr->next = currentPtr;
newPtr->before = NULL;
}
else
{
previousPtr->next = newPtr;
newPtr->before = previousPtr;
newPtr->next = currentPtr;
if(currentPtr != NULL)
currentPtr->before = newPtr;
}
}
void ciftToTek (CiftBagliPtr *ciftStart,TekBagliPtr *tekStart)
{
CiftBagliPtr tempPtr;
CiftBagliPtr currentPtr;
char ad[20];
currentPtr= (*ciftStart);
while(currentPtr != NULL)
{
strcpy(ad,currentPtr->name);
insertTekBagli(tekStart,ad);
tempPtr = currentPtr;
currentPtr = currentPtr->next;
}
}
int main()
{
TekBagliPtr tekStart = NULL;//tek bağlı listenin başlangıç adresi...
CiftBagliPtr ciftStart = NULL;
int kayitSayisi;
char ad[20];
printf("Kac tane kayit girmek istiyorsunuz....
");
scanf("%d",&kayitSayisi);
flushall();
for(int i = 0;i < kayitSayisi;i++)
{
printf("%d-->isim..
",i+1);
gets(ad);
flushall();
insertCiftBagli(&ciftStart,ad);
}
printf("
***************************
");
printCiftBagli(ciftStart);
printf("NULL");
printf("
****************************
");
ciftToTek(&ciftStart,&tekStart);
printf("
****************************
");
printTekBagli(tekStart);
printf("NULL");
return 0;
}
|
|
Yazar |
|
reccae
istanbul
banlandı
Kayıt: 15.02.2006 |
|
http://img265.imageshack.us/img265/7497/ikiliagaczq6.jpg
finaldeki ilk soru
sanırım anlaşılıyor resimden direk hangisinin sağda yada solda olduğu.
hoca bütte 2 adet şekil soracak sanırım yine. bunlara iyi çalışırsanız dersi geçmeniz kolaylaşır.
insa ettigim binanin cimentosu kelâm
|
|
Yazar |
|
serdar5
Kayıt: 12.02.2006 |
|
altuko kardeşim sabahtan beri eklediin ornekleri arıyorm sağda solda ama bi türlü ulaşamadım o yüzden sana bir kaç çift lafım var "ALLAH RAZI OLSUN SENDEN "
Kanit gösterilmeden yapilmis bir iddiayi çürütmek için kanita ihtiyaç yoktur
|
|
Yazar |
|
altuko
banlandı
Kayıt: 05.02.2006 |
|
serdar5 yazdi | altuko kardeşim sabahtan beri eklediin ornekleri arıyorm sağda solda ama bi türlü ulaşamadım o yüzden sana bir kaç çift lafım var "ALLAH RAZI OLSUN SENDEN " |
Önemli değil...Yardımım dokunduysa ne mutlu bana...
Çift bağlıdan Stack'e Stack den ÇiftBağlıya kodu da bu...
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct Stack
{
char name[20];
struct Stack *next;
};
typedef struct Stack Stack;
typedef Stack* StackPtr;
struct CiftBagli
{
char name[20];
struct CiftBagli *next;
struct CiftBagli *before;
};
typedef struct CiftBagli CiftBagli;
typedef CiftBagli* CiftBagliPtr;
void insertCiftBagli(CiftBagliPtr *start,char *Cname)
{
CiftBagliPtr newPtr;
CiftBagliPtr currentPtr,previousPtr;
newPtr = (CiftBagliPtr)malloc(sizeof(CiftBagli));
strcpy(newPtr->name,Cname);
currentPtr = (*start);
previousPtr = NULL;
while(currentPtr != NULL && (strcmp(currentPtr->name,Cname) < 0))
{
previousPtr = currentPtr;
currentPtr = currentPtr->next;
}
if(previousPtr == NULL)
{
newPtr->next = currentPtr;
newPtr->before = NULL;
(*start) = newPtr;
}
else
{
previousPtr->next = newPtr;
newPtr->before = previousPtr;
newPtr->next = currentPtr;
if(currentPtr != NULL)
currentPtr->before = newPtr;
}
}
void pushStack(StackPtr *topPtr,char *Sname)
{
StackPtr newPtr;
newPtr = (StackPtr)malloc(sizeof(Stack));
strcpy(newPtr->name,Sname);
newPtr->next = (*topPtr);
(*topPtr) = newPtr;
}
char *popStack(StackPtr *topPtr)
{
char name[20];
StackPtr tempPtr;
strcpy(name,(*topPtr)->name);
tempPtr = (*topPtr);
(*topPtr) = (*topPtr)->next;
return name;
}
void printList(CiftBagliPtr listPtr)
{
if(listPtr != NULL)
{
printf("%s->",listPtr->name);
printList(listPtr->next);
}
}
void printStack(StackPtr topPtr)
{
if(topPtr != NULL)
{
printf("%s->",topPtr->name);
printStack(topPtr->next);
}
}
void StackToList(StackPtr *top,CiftBagliPtr *start)
{
StackPtr currentPtr;
currentPtr = (*top);
while(currentPtr != NULL)
{
insertCiftBagli(start,popStack(top));
currentPtr = (*top);
}
}
void ListToStack(CiftBagliPtr *start,StackPtr *top)
{
CiftBagliPtr currentPtr;
CiftBagliPtr tempPtr;
currentPtr = (*start);
while(currentPtr != NULL)
{
pushStack(top,currentPtr->name);
(*start) = (*start)->next;
tempPtr = currentPtr;
currentPtr = (*start);
free(tempPtr);
}
}
int main()
{
CiftBagliPtr startPtr = NULL;
StackPtr topPtr = NULL;
int kayitSayisi;
char ad[20];
printf("Kac tane kayit girmek istiyorsunuz....
");
scanf("%d",&kayitSayisi);
flushall();
for(int i = 0;i < kayitSayisi;i++)
{
printf("%d-->isim..
",i+1);
gets(ad);
flushall();
insertCiftBagli(&startPtr,ad);
}
printf("
**********************************
");
printList(startPtr);
printf("
**********************************
");
ListToStack(&startPtr,&topPtr);
printStack(topPtr);
printf("
");
return 0;
}
|
|
Yazar |
|
indigestible
Kayıt: 27.01.2007 |
|
10 numarasın gerçekten..çok saol..
|
|
Yazar |
|
reccae
istanbul
banlandı
Kayıt: 15.02.2006 |
|
altuko paylaşımın için teşekkürler. finalde geçmiştim ama biraz inceleyip tekrar yapmakta fayda var
bu bir yapıdan diğer yapıya veri aktarma işine gelince ezber yapmanıza gerek yok hiç bir şeyi. 2-3 okuma ve 2-3 kaydetme alt programını yazabiliyorsanız bunların hepsini yapabilirsiniz
yani elinizdeki yapıdaki tüm verileri sırasıyla okuyup yeni yapıya kaydedilmek üzere göndereceksiniz. hepsi bu. okuma kısmı genelde 3-7 satır arasında sürüyor kaydetme fonksiyonu da yapının türüne göre 15-30 satır arası sürebiliyor. 10 satırda 2 tane struct tutsa eder size en fazla 50 satır
eski yapıyı okuma kısmını main içinde yaparsınız, yeni yapınızın örneğini de mainde tanımlarsınız ve bu şekilde nerdeyse her türlü veri aktarma kodunu yazabilirsiniz.
sınavda şimdiden hepinize başarılar.
unutmadan ekleyim bu dönem veri yapıları dersi mükemmel geçti
derste konuşmayan, hocayı dikkatle dinleyen, sorularıyla anlamadığımız yerleri anlamamızda yardımcı olan tüm arkadaşlara teşekkürler. derste geyik yapacak kişiler kantinde muhabbet ederse sanırım hepimiz için en hayırlısı bu olacak.
insa ettigim binanin cimentosu kelâm
|
|
Yazar |
|
altuko
banlandı
Kayıt: 05.02.2006 |
|
reccae yazdi | altuko paylaşımın için teşekkürler. finalde geçmiştim ama biraz inceleyip tekrar yapmakta fayda var
bu bir yapıdan diğer yapıya veri aktarma işine gelince ezber yapmanıza gerek yok hiç bir şeyi. 2-3 okuma ve 2-3 kaydetme alt programını yazabiliyorsanız bunların hepsini yapabilirsiniz
yani elinizdeki yapıdaki tüm verileri sırasıyla okuyup yeni yapıya kaydedilmek üzere göndereceksiniz. hepsi bu. okuma kısmı genelde 3-7 satır arasında sürüyor kaydetme fonksiyonu da yapının türüne göre 15-30 satır arası sürebiliyor. 10 satırda 2 tane struct tutsa eder size en fazla 50 satır
eski yapıyı okuma kısmını main içinde yaparsınız, yeni yapınızın örneğini de mainde tanımlarsınız ve bu şekilde nerdeyse her türlü veri aktarma kodunu yazabilirsiniz.
sınavda şimdiden hepinize başarılar.
unutmadan ekleyim bu dönem veri yapıları dersi mükemmel geçti
derste konuşmayan, hocayı dikkatle dinleyen, sorularıyla anlamadığımız yerleri anlamamızda yardımcı olan tüm arkadaşlara teşekkürler. derste geyik yapacak kişiler kantinde muhabbet ederse sanırım hepimiz için en hayırlısı bu olacak.
|
Okuyup kaydetme işi kolay..kodu incelediysen STack den çiift bağlıya aktarma yaparken pop yaptım(veriyi sstackten sildim).eğer aktarma dediği kopyalamaysa kolay.hem silip hemde kopyalamaysa ağaçta flan kasar.
|
|
Yazar |
|
reccae
istanbul
banlandı
Kayıt: 15.02.2006 |
|
silme kısmını yazmaya gerek yok diye düşünüyorum sonuçta okuyup kaydettik mi sınavda hocanın istediği şeyi yapmış oluyoruz.
ağaç için çıkartmak falan eziyetli olur mesela.
pop ile çıakrtmayın dersem ve hoca çıkartacaksınız derse sorumluluk almak istemem ama bizim pop işlemini yapmamız yapı için bir şey değiştirmez.
bu arada cidden sağol kodlar için
bir bilgisayar mühendisi bu tür bir uygulamada push pop hepsini yazmalı ama sınavda zaman derdi olunca insan aman o da çıkmayıversin diyor
neyse işte anladınız siz
sınavda vakit yetişmeyecekse pop işlemini atlayabilirsiniz gönül rahatlığı ile.
insa ettigim binanin cimentosu kelâm
|
|
Yazar |
|
akgulozkan
istanbul
Kayıt: 12.12.2006 |
|
struct treenode dan sonra
typedef struct treenode *nodeptr;
ve arkasından da
nodeptr *ptr olsun..
burda ptr , treenode yapısında bir pointerın adresini tutan bir pointer mı oluyo??
burda kafam karıştı yardımcı olabilirseniz....????
|
|
Yazar |
|
akgulozkan
istanbul
Kayıt: 12.12.2006 |
|
kısacası şu koddaki pointer mantığını anlata bilirseniz çok sevinirm..
struct treeNode {
struct treeNode *leftPtr;
int data;
struct treeNode *rightPtr;
};
typedef struct treeNode TreeNode;
typedef TreeNode *TreeNodePtr;
void insertTree(TreeNodePtr *treePtr,int data)
{
if((*treePtr == NULL))
{
(*treePtr) = (TreeNodePtr)malloc(sizeof(TreeNode));
(*treePtr)->data = data;
(*treePtr)->leftPtr = NULL;
(*treePtr)->rightPtr = NULL;
}
else
{
if((data > (treePtr)->data))
insertTree(&((*treePtr)->rightPtr),data);
else
insertTree(&((*treePtr)->leftPtr),data);
}
}
|
|
Yazar |
|
altuko
banlandı
Kayıt: 05.02.2006 |
|
adresin adresiyle işlem yapıyorum.çünkü fonksiyona gönderdiğim pointerin değerin değişmesini istiyorum.onun için adresi yolllamam gerekiyor.başlangıç kök düğüm null,onun adresini bu fonksiyona gönderdiğimiz de bizim için bi start değeri oluşturur.Umarım anlatabilmişimdir.
|
|
Yazar |
|
uslanmaz4
ANKARA
Kayıt: 15.01.2006 |
|
tesekkurler
kedicik kedicik
|
|
Yazar |
|
akgulozkan
istanbul
Kayıt: 12.12.2006 |
|
altuko yazdi | adresin adresiyle işlem yapıyorum.çünkü fonksiyona gönderdiğim pointerin değerin değişmesini istiyorum.onun için adresi yolllamam gerekiyor.başlangıç kök düğüm null,onun adresini bu fonksiyona gönderdiğimiz de bizim için bi start değeri oluşturur.Umarım anlatabilmişimdir. |
anladım teşekkür
|
|
Yazar |
|
akgulozkan
istanbul
Kayıt: 12.12.2006 |
|
iplikli ikili ağaç sorusu gelir mi?? (kod) ?? veya sıralama algoritmalarından???
kestane kebap acele cevap
edit: sıralama olacak o kafayı yemişim
|
|
Yazar |
|
akgulozkan
istanbul
Kayıt: 12.12.2006 |
|
Final 1. sorunun cevabı :
DLR : CBAFIGDHEJK
LDR : BFIGAHDJEKC
LRD : GIFHJKEDABC
hatam varsa vur yüzüme.
|
|
|
|
-
Del.icio.us
-
Digg
-
Facebook
-
Furl
-
Google
-
Blink
-
Simpy
-
Spurl
-
Y! MyWeb
|
|
| | | | | | | | | | | |