Konuyu görüntüle
IUCODERS FORUM > Duyurular > Okul ile ilgili > veri yapıları but
Yazar
akgulozkan


avatar
istanbul
Kayıt: 12.12.2006
13.02.2008-23:07 #38034
kayalik yazdi
 
Herkese kolay gelsin.Bi yerlere konulmuştur belki buralarda ve hemen herkeste vardır kesin ama ödev/sınavda göremedim,adminlere de ulaşamadım.Lazım olur belki..Geçen yılın büt soruları_ne tesadüf ki tarih yine 14.02:)

1-Oluşturulmuş bir tek bağlı listeyi tersine çeviren bir alt program yazınız.(30p)
2-Girilen iki ağacı birleştiren bir alt program yazınız.(35p)
3-"veri.dat" isimli bir dosya içerisinde kişi adı ve boy ölçüsü bulunmaktadır.Boy değerlerini dosyadan okuyup kabarcık sıralama yöntemine göre sıraya dizen ve sonucu ekrana yazan bir program yazınız.(35p)


bu ne yaabeat upbeat up ben bu sorularla kalırımclownclown





Yazar
audtou


avatar
malatya
Kayıt: 31.08.2006
13.02.2008-23:07 #38035
nesibe yazdi
 
peki program sorularında yapılar ve asıl istenen fonksiyon dışında bütün program yazılacak mı yoksa mesela sadece struct lar ve void CİftToTek (...;) şeklinde mi yapmalıyız.yani tamamını yazmazsak eksik puan mı alırız acaba?

sadece yapıyı ve gerekli fonksiyonları yazsan yeter galiba.Fazladan fonksiyonlar gerekebilir mesela tek bağlıya ekleme fonksiyonu vs. bunlarıda yazarsın.Tamamını yazmaya gerek yok





bitiyo lan!
Yazar
nesibe


avatar

Kayıt: 10.02.2006
13.02.2008-23:12 #38037
audtou yazdi
 
nesibe yazdi
 
peki program sorularında yapılar ve asıl istenen fonksiyon dışında bütün program yazılacak mı yoksa mesela sadece struct lar ve void CİftToTek (...;) şeklinde mi yapmalıyız.yani tamamını yazmazsak eksik puan mı alırız acaba?

sadece yapıyı ve gerekli fonksiyonları yazsan yeter galiba.Fazladan fonksiyonlar gerekebilir mesela tek bağlıya ekleme fonksiyonu vs. bunlarıda yazarsın.Tamamını yazmaya gerek yok


teşekkürler

kayalik yazdi
 
Herkese kolay gelsin.Bi yerlere konulmuştur belki buralarda ve hemen herkeste vardır kesin ama ödev/sınavda göremedim,adminlere de ulaşamadım.Lazım olur belki..Geçen yılın büt soruları_ne tesadüf ki tarih yine 14.02:)

1-Oluşturulmuş bir tek bağlı listeyi tersine çeviren bir alt program yazınız.(30p)
2-Girilen iki ağacı birleştiren bir alt program yazınız.(35p)
3-"veri.dat" isimli bir dosya içerisinde kişi adı ve boy ölçüsü bulunmaktadır.Boy değerlerini dosyadan okuyup kabarcık sıralama yöntemine göre sıraya dizen ve sonucu ekrana yazan bir program yazınız.(35p)


bu soruların cevaplarını yapabilenlerden yardım bekliyoruz


3. soru finaldeki gibi yani farklı değil ama diğerleri?





kalpler bir, yetmez mi?

Yazar
akgulozkan


avatar
istanbul
Kayıt: 12.12.2006
13.02.2008-23:27 #38039
1. soruda yeni bir liste oluşturarak yaparsak kolay olabilirclownclown ama bellekteki elemanların yerleri değiştirmeden listeyi değiştirmek biraz daha zor gibifrustratedhugs





Yazar
tuuba


avatar
Bursa
Kayıt: 22.01.2007
13.02.2008-23:34 #38041
http://img186.imageshack.us/my.php?image=adsz1ex6.png

İlk sayfada verilen 1.sorunun cevabı

DLR,LDR....taramaları daha farklı yapılmış....Hangisi doğru??????????





Yazar
audtou


avatar
malatya
Kayıt: 31.08.2006
13.02.2008-23:35 #38042
akgulozkan yazdi
 
1. soruda yeni bir liste oluşturarak yaparsak kolay olabilirclownclown ama bellekteki elemanların yerleri değiştirmeden listeyi değiştirmek biraz daha zor gibifrustratedhugs

bence önce verileri bi stack'e atıp sonra ordan yeni tek bagli listeye atabiliriz ama ugrasmak lazım





bitiyo lan!
Yazar
nesibe


avatar

Kayıt: 10.02.2006
13.02.2008-23:40 #38043
tuuba yazdi
 
http://img186.imageshack.us/my.php?image=adsz1ex6.png

İlk sayfada verilen 1.sorunun cevabı

DLR,LDR....taramaları daha farklı yapılmış....Hangisi doğru??????????



orada ldr dlr yapılmamış ki sadece ikili ağaca cevrilmiş





kalpler bir, yetmez mi?

Yazar
tuuba


avatar
Bursa
Kayıt: 22.01.2007
13.02.2008-23:44 #38044
sağ üstte değil mi???????????





Yazar
nesibe


avatar

Kayıt: 10.02.2006
13.02.2008-23:47 #38045
tuuba yazdi
 
sağ üstte değil mi???????????



evt görmemişimclownbakayım





kalpler bir, yetmez mi?

Yazar
nesibe


avatar

Kayıt: 10.02.2006
13.02.2008-23:49 #38046
ben de ilk yaptığımda böyle bulmuştum ama bu yanlış yani akgülözkanın yaptığı doğru bencesonradan öyle buldum .sağlamasını da yaptım





kalpler bir, yetmez mi?

Yazar
serdar5


avatar

Kayıt: 12.02.2006
13.02.2008-23:52 #38047
audtou yazdi
 
akgulozkan yazdi
 
1. soruda yeni bir liste oluşturarak yaparsak kolay olabilirclownclown ama bellekteki elemanların yerleri değiştirmeden listeyi değiştirmek biraz daha zor gibifrustratedhugs

bence önce verileri bi stack'e atıp sonra ordan yeni tek bagli listeye atabiliriz ama ugrasmak lazım


bana gorede soylediğin çok mantıklı ilk aklıma gelende bu yontem oldu,sanırımı bu yolla çözülebilir.





Kanit gösterilmeden yapilmis bir iddiayi çürütmek için kanita ihtiyaç yoktur
Yazar
akgulozkan


avatar
istanbul
Kayıt: 12.12.2006
13.02.2008-23:55 #38048
serdar5 yazdi
 
audtou yazdi
 
akgulozkan yazdi
 
1. soruda yeni bir liste oluşturarak yaparsak kolay olabilirclownclown ama bellekteki elemanların yerleri değiştirmeden listeyi değiştirmek biraz daha zor gibifrustratedhugs

bence önce verileri bi stack'e atıp sonra ordan yeni tek bagli listeye atabiliriz ama ugrasmak lazım


bana gorede soylediğin çok mantıklı ilk aklıma gelende bu yontem oldu,sanırımı bu yolla çözülebilir.


evet ama belki işlemi direk liste üzerinde yapmak gerekiyodur.. Asıl sorun o zaten.. Ama stack e atarak gayet kolay çözülebilir peacepeace





Yazar
audtou


avatar
malatya
Kayıt: 31.08.2006
14.02.2008-00:26 #38049
1. soruyu stack e atıp çözmeye çalıştım
(altuko nun kodu üzerinden :)

#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 
#define MAXELEMAN 10
struct TekBagli { 
	int data; 
	struct TekBagli *next; 
};

typedef struct TekBagli Tekbagli; 
typedef struct TekBagli* TekBagliPtr; 

struct Stack{
	int top;
	int dizi[MAXELEMAN];
};
typedef struct Stack Stack;
typedef struct Stack *StackPtr;

void push(StackPtr *start,int value){
	StackPtr temp = *start;
	if(temp->top == MAXELEMAN - 1){
		printf("stack dolu

");
		return;
	}
	else
		temp->dizi[++(temp->top)] = value;
}

int pop(StackPtr *start){
	StackPtr temp = *start;
	if(temp->top < 0){
		printf("stack bos!!

");
		exit(0);
	}
	return temp->dizi[(temp->top)--];
}

void printStack(StackPtr st){
	int index = st->top;
	int i;
	for(i = 0; i < index; i++){
		printf(" %d ->",st->dizi[i]);
	}
}
void insertTekBagli(TekBagliPtr *tekStart,int data) { 
	if((*tekStart) == NULL) { 
		(*tekStart) = (TekBagliPtr)malloc(sizeof(TekBagli)); 
		(*tekStart)->data = data; 
		(*tekStart)->next = NULL; 
	} 
	else 
	insertTekBagli(&((*tekStart)->next),data); 
} 
void printTekBagli(TekBagliPtr tekStart) { 
	if(tekStart != NULL) { 
		printf("%d->",tekStart->data); 
		printTekBagli(tekStart->next); 
	} 
} 

void tekToStackOrdandaTeke(TekBagliPtr *tekStart1,TekBagliPtr *tekStart2,StackPtr *st){
	TekBagliPtr current;
	int deger;
	current = (*tekStart1);
	while(current != NULL){//tek bagli1 den staacke atma işlemi
		deger = current->data;
		push(st,deger);
		current = current->next;
	}
	while((*st)->top >= 0){//stack den 2. tek bagliya atma işlemi
		deger = pop(st);
		insertTekBagli(tekStart2,deger);
	}
}

int main() { 
	TekBagliPtr tekStart1 = NULL;//tek bağlı listenin başlangıç adresi... 
	TekBagliPtr tekStart2 = NULL; 
	int kayitSayisi,value; 
	
	StackPtr stack1=(StackPtr)malloc(sizeof(Stack));
	stack1->top = -1;
	
	printf("Kac tane sayi girmek istiyorsunuz....(Max 10 lutfen) "); 
	scanf("%d",&kayitSayisi); 
	flushall(); 
	for(int i = 0;i < kayitSayisi;i++) { 
		printf("%d-->deger.. ",i+1); 
		scanf("%d",&value); 
		flushall(); 
		insertTekBagli(&tekStart1,value); 
	} 
	printf(" *************************** 
tekbagli1::
"); 
	printTekBagli(tekStart1);  
	tekToStackOrdandaTeke(&tekStart1,&tekStart2,&stack1); 
	printf("
**************************** 
tek bagli2:
"); 
	printTekBagli(tekStart2); 
	printf("

");
	return 0; 

}







bitiyo lan!
Yazar
tuuba


avatar
Bursa
Kayıt: 22.01.2007
14.02.2008-01:33 #38051
1. sorunun taramalarını ben de linkte verildiği gibi buldum,orta yolu buksak??????





Yazar
guvendh


avatar
Rize
Kayıt: 26.02.2006
14.02.2008-01:45 #38052
audtou yazdi
 
1. soruyu stack e atıp çözmeye çalıştım
(altuko nun kodu üzerinden :)

.......................


Bende farklı bi yoldan yaptım ama biraz karışık gibi sanki sillyshockthinking

#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 

#define str_uzunluk	10

typedef struct TekBagli { 
int no; 
char ad[str_uzunluk];

struct TekBagli *next; 
}tekBagli; 

void Listele_TekBagli (tekBagli *head)
{
	tekBagli *ptr = head;
	
	while(ptr != NULL)
	{
		printf("%-10d %-20s
", ptr->no,ptr->ad);
		ptr = ptr->next;
	}
}

tekBagli * Ekle_TekBagli(tekBagli *head, int no, char ad[str_uzunluk])
{
	tekBagli *yeni = (tekBagli *) malloc(sizeof(tekBagli));
	tekBagli *ara = head;

	yeni->no = no;
	strcpy(yeni->ad, ad);
	yeni->next = NULL;

	if(head == NULL)
		return yeni;
	else
	{
		while(1)
		{
			if(ara->next == NULL)
			{
				ara->next = yeni;
				return head;
			}
			else
				ara = ara->next;
		}
	}
}

tekBagli * TersiniAl(tekBagli *head1, tekBagli *head2)
{
	tekBagli *ara = head1;
	tekBagli *ara2 = head1;

	while(1)
	{
		ara = head1;
		ara2 = head1;

		while(1)
		{
			if(ara->next == NULL)
			{
				head2 = Ekle_TekBagli(head2, ara->no, ara->ad);
				free(ara2->next);
				ara2->next = NULL;
				if(ara == head1)
					return head2;
				break;
			}
			else
			{	ara2 = ara;
				ara = ara->next;
			}
		}

	}


	return head2;

}

void main()
{
	tekBagli *head1 = NULL;
	tekBagli *head2 = NULL;

	head1 = Ekle_TekBagli(head1, 11, "Merhaba");
	head1 = Ekle_TekBagli(head1, 12, "Merhaba2");
	head1 = Ekle_TekBagli(head1, 13, "Merhaba3");
	head1 = Ekle_TekBagli(head1, 14, "Merhaba4");

	Listele_TekBagli(head1);

	head2 = TersiniAl(head1, head2);
	printf("********************
");
	getch();

	Listele_TekBagli(head2);


}






1 2 3 4 5 6 7 8
Del.icio.us
Digg
Facebook
Furl
Google
Blink
Simpy
Spurl
Y! MyWeb