Splitting a Linked List

I’ll try to explain how to split a linked list and return second part to another list. Logic is, first pass the list and count items. After that pass list till half of count and after passes return the address of list. Let’s look codes;

node struct should look like;

1

typedef struct tagNode{
	int data;
	struct tagNode* pNext;
}Node;

I have AddItemToEnd function;

 

Node* AddItemToEnd(Node* pList, int data)
{
	Node* pTemp;
	Node* pNewItem = malloc(sizeof(Node));
	pNewItem->data = data;
	pNewItem->pNext = NULL;

	if (NULL == pList)
		return pNewItem; // If list is empty, return new item.
	pTemp = pList;
	while (NULL != pTemp->pNext)
		pTemp = pTemp->pNext; // Pass the list until the end.
	pTemp->pNext = pNewItem; // Add my new item to the end.

	return pList; // return list
}

Let me add four item like 1,2,3,4. You can imagine it as like this picture:

2

And my Split function;

 

Node* SplitList(Node* pList){
	Node* pTemp;
	int count=1;
	int i;


	pTemp = pList; // I don't want to change my original list, thats why I used temp.

	if (NULL == pList->pNext || NULL == pList){
		return pList; // If list is empty or has only one item, cannot split and return list back.
	}

	while (NULL != pList->pNext){
		count++; // Counts items on the list. When pList's pNext become NULL counting will stop.
		pList = pList->pNext;
	}


	for (i = 0; i < count / 2; i++) 		
            pTemp = pTemp->pNext;
	
	return pTemp;

}

I’ve tried to trace it with an image;

3Finally my print and main functions here;

 

void PrintList(Node* list){

	while (NULL != list){
		printf("Data: %d\n", list->data);
		list = list->pNext;
	}

}


int main(int argc, char** argv)
{
	Node* list = NULL;
	Node* Split;
	int i;

	for (i = 0; i < 4; i++)
		list = AddItemToEnd(list, i + 1);

	Split = SplitList(list);

	printf("*****Before Split*****\n");
	PrintList(list);
	printf("\n*****After Split*****\n");
	PrintList(Split);

	return EXIT_SUCCESS;
}

My output is like this:

4

Reklamlar

Uygulama İndirilme Raporu ile Analiz Yapma

Windows Phone Dev Center’da uygulamalarınızın indirilme raporuna detaylı biçimde ulaşabilirsiniz. Rapor dosyasında hangi uygulamanızı hangi ülkeden, hangi yaş aralığından, hangi cinsiyetten kullanıcılar indirmiş rahatlıkla bakıp analiz edebilirsiniz. Rapor dosyasında ulaşabileceğiniz bilgiler;

  • Satın alma tipi
  • Ülke
  • Dil
  • Yaş aralığı
  • Cinsiyet
  • Telefonun işletim sistemi
  • Telefonun üreticisi
  • Operator
  • İndirilme

Yapmanız gereken Reports kısmından App Downloads’ı seçtikten sonra istediğiniz kısıtlamaları yapıp Export’a basıp excel dosyanızı indirmek olacak.

1

2

 

Resmi Yukarıdan Aşağı Animasyon ile Hareket Ettirme

Windows Phone’da 3 tip animasyon vardır, bunlar;

Bunlardan Double Animation kullanarak bir resmi nasıl yukarıdan aşağı kaydırırız bunu göstermek istiyorum.

Kullanacağım resim;

light

Bunu yapmanın en kolay yolu resmimize CompositeTransform ekleyip TranslateY özelliğini değiştirmektir.

1

Yukarıda resmimizin CompositeTransform TranslateY özelliğini 0 yaptım çünkü resmin üstten aşağı gelmesini istiyorum. Daha sonra storyboard içinde ilk keyframe değerini 0, ikincisini de 750 yaptım. Böylece y pozisyonu 0px(üst)den başlayıp 750px’e kadar 5 saniyede inecek. KeyTime değerleri saat,dakika,saniye şeklindedir. Ben 5 saniyede inmesini istediğim için 0:0:5 kullandım. Animasyonun gerçekleşmesi için storyboard sınıfından oluşturduğumuz nesnenin(myStoryboard) Begin metodunu herhangi bir yerde çağırmalıyız. Bu bir buton veya appbar olabilir. Ben main’de kullandım;

2Animasyonlar hakkında daha fazla bilgiye yukarıdaki linklerden ulaşabilirsiniz.

Coding4Fun Toolkit Kullanarak Ses Kaydı Yapma

Merhabalar, bu yazımda sizlere coding4fun toolkit kullanarak ses kaydı yapan bir uygulama nasıl yapılır adım adım anlatmaya çalışacağım. Yazının sonunda bir ses kaydı uygulamamız olacak 🙂

File- New- Project’ten yeni bir Windows Phone projesi açarak başlayalım. Codng4Fun toolkit kullanacağımız için projemize ekleyelim;

12

Toolkitimizi yükledikten sonra References aşağıdaki gibi olmalı;

3

Şimdi arayüze bir resim, kayıt için bir toggle buton ve oynat için bir buton ekleyeceğim. Toggle Buton; checked ve unchecked olmak üzere 2 tane event handler’a sahip. Kayıt için en mantıklı tercih toggle buton olacaktır. İlk tıkladığımızda checked handler’ı ikinci tıklamamızda ise unchecked handler’ı çalışacak.

4

5Benim kullanacağım arayüz aşağıdaki gibi;

6

ToggleButton’ın Checked ve Unchecked’lerine isim verelim ve kodlamaya geçelim;

7MainPage.xaml.cs içinde MicrophoneRecorder’ın private instance’ını oluşturuyoruz. MicrophoneRecorder kullanabilmemiz için üstüne gelip şekildeki gibi using Coding4Fun.Toolkit.Audio eklememiz gerekiyor;

8

Bunu yaptıktan sonra Toggle Butonun Checked event handler’ında _recorder.Start(), Unchecked event handler’ında ise _recorder.Stop() metodlarını kullanabiliriz;

9

Biz kayıt işlemi yaparken MicrophoneRecorder nesnesi ses bilgilerini buffer’da toplar. Stop() metodunu çağırdığımız anda MicrophoneRecorder, toplama işlemini sonlandırır. Bizim yapmamız gereken şey ise bufferda duran o ses bilgilerini .wav formatına çevirip saklamak. .wav olarak sakladıktan sonra, MediaElement kullanarak o kaydettiğimiz .wav dosyasını rahatlıkla oynatabiliriz.

MicrophoneRecorder, MemoryStream nesnesinde bufferda ses bilgilerimizi tutuyor, IsolatedStorage kullanarak MemoryStreamdeki bilgileri kaydedeceğim. Bunun için SaveTempAudio isminde bir metod oluşturup parametre olarak MemoryStream türünden bir nesne alıyorum ve kayıt işlemine başlıyorum;

10

11

13Evet, coding4fun toolkitinin bize sunduğu kolaylıklardan biri de yukarıdaki GetWavAsByteArray metodu 🙂 Bu metod sayesinde rate bilgisini wav dosyasına tek satırlık kodla çevirebiliyoruz.. Bunun çalışabilmesi için aşağıdaki gibi using Coding4Fun.Toolkit.Audio.Helpers; eklemeniz gerekiyor. Kayıt işlemi için hazırladığımız metodu, _recorder.Stop() ‘ın hemen altına ekliyoruz. Böylece ses kayıt işlemi biter bitmez, ses dosyamızı, oluşturduğumuz SaveTempAudio metodu sayesinde bufferdan alıp wav dosyası şeklinde kaydediyoruz.
12

Ses kaydı işlemimiz bitti, şimdi bunu oynatmak için oynat butonumuzu kodlayacağız ama bunun öncesinde MainPage.xaml ‘de ContentPanel içine bir MediaElement ekliyoruz sonrasında SaveTempAudio metodunun içinde setsource yaparak hangi dosyayı çalacağını set ediyoruz;

14

15

Şimdi oynat butonumuza Click event handler verelim ve AudioPlayer’ımızı oynatalım.

16

17

İşlemimiz bu kadar. Fakat bu halde debug etmeye çalışırsanız hata yiyeceksiniz. Sebebi capabilities’ten microphone’nun seçilmemiş olması. WMAppManifest.xml – Capabilities ‘ten ID_CAP_MICROPHONE seçili duruma getirdiğiniz takdirde hatadan kurtulacaksınız;

18

19

Uygulamayı çalıştırdığınızda ses kaydını sorunsuz yaptığını göreceksiniz. Fakat ses kaydı yapmadan önce bir mikrofonunuz olduğunundan emin olun 🙂

20

Geleceği Yazanlar Uygulama Maratonu

gelecegiyazanlar

İyi bir geliştirici, tasarımcı ve iş fikri sahibi misin? Geleceği Yazanlar Türkiye’nin en yenilikçi, sosyal fayda yaratacak, iş dünyasına katkı sağlayacak, yaşamları iyileştirecek mobil uygulamalarını arıyor. Ödüllerle dolu maratona katıl, eğitimlerini al, danışmanların da desteği ile hayalindeki ve Türkiye’ye katkı sağlayacak uygulamayı geliştir.

Takvim

13-30 Mart 2014 // Başvuruların alınması

31 Mart 2014 // Başvuruların açıklanması

5-6 Nisan 2014 // Kod geliştirme etkinliği

8 Nisan – 6 Mayıs 2014 // Eğitimler ve ekosistem buluşmaları

7 Nisan – 8 Mayıs 2014 // Danışman görüşmeleri

9 Mayıs 2014 // Uygulamaların markete yüklenmesi

14 Mayıs 2014 // Geleceği Yazanlar Buluşması

 

Daha fazla bilgi almak ve Maratona başvurmak için;

https://gelecegiyazanlar.turkcell.com.tr/maraton

 

C++ Program to Convert Decimal to Binary Using Stack

Today I’m going to explain that how you can convert decimal to binary using stack class in c++. Logic is clear, first, we’ll divide the decimal by 2 and remainder is pushed onto stack and our new decimal will be decimal/2. This is carried out until the decimal becomes 0. Then we’ll pop all remainders into a integer array and display it on the screen. Let’s see codes below;

I’ve stack header file and .cpp file;

Stack.h:

#ifndef STACK_H
#define STACK_H

class Stack
{
public:
	Stack(int size);
	virtual ~Stack();

	bool Pop(int *pData);
	bool Push(int data);
	bool IsFull();
	bool IsEmpty();
	bool Peek(int *pData);

private:
	int m_capacity;
	int m_size;
	int *m_pData;

};

#endif

Stack.cpp:

#include "Stack.h"
#include iostream

using namespace std;

Stack::Stack(int size)
:m_capacity(size),
m_size(0)
{
	m_pData = new int[size];
}

Stack::~Stack()
{
	delete[] m_pData;
}

bool Stack::IsEmpty()
{
	if (m_size == 0)
		return true;
	else
		return false;
}
bool Stack::IsFull()
{
	if (m_size == m_capacity)
		return true;
	else
		return false;
}

bool Stack::Push(int data)
{
	if (IsFull())
		return false;
	else{
		m_pData[m_size] = data;
		m_size++;
		return true;
	}

}

bool Stack::Pop(int* pData)
{
	if (IsEmpty())
		return false;
	else{
		*pData = m_pData[m_size - 1];
		m_size--;
		return true;
	}
}

bool Stack::Peek(int* pData)
{
	if (IsEmpty())
		return false;
	else{
		*pData = m_pData[m_size - 1];
		return true;
	}
}

Now, in my main.cpp I’ll make the convert.

Okumaya devam et

Turkcell Geleceği Yazanlar’ın İlk Mezunlarındanım

Geleceği Yazanlar

Turkcell’in Geleceği Yazanlar platformunda gerekli eğitimleri alıp, sınavları geçtikten sonra 1 Mart 2014 günü Turkcell Akademi’de fiziksel sınava girip, Windows Phone alanında Geleceği Yazanlar’ın ilk mezunlarından biri oldum. Turkcell’e ve Geleceği Yazanlar’da emeği olan herkese ülkemizdeki yazılımı geliştirmek amacıyla böyle bir eğitim verdikleri için teşekkürü borç bilirim.

Haber Linki: http://medya.turkcell.com.tr/turkcellin-yerli-mobil-yazilim-seferberligi-gelecegi-yazanlar-ilk-mezunlarini-verdi-bulten_5908.html