Ev Kişisel Finans C Programlamada Bağlı Liste Nasıl Oluşturulur - Cümlenin içinde

C Programlamada Bağlı Liste Nasıl Oluşturulur - Cümlenin içinde

Video: C Programlama Bağlı Listeler 2024

Video: C Programlama Bağlı Listeler 2024
Anonim

C programlamada, zaten oluşturduğunuz koda ikinci bir yapı eklemek isterseniz, birbirine işaretçiler içeren bir dizi yapı olan bağlantılı bir liste oluşturun. Bir yapıdaki temel verilerle birlikte yapı, listedeki bir sonraki yapının adresini içeren bir işaretçi içerir.

Bazı akıllı hileli işaretçi isimleriyle birlikte, listenin sonuna bir boşluk bırakırsanız, İlkel Bağlantılı Liste Örneğinde kaynak koduna benzeyen bir sonuç almanız mümkündür.

ÖNCELİKLİ BİRLEŞTİRİLMİŞ ÖRNEK

#include #include #include int main () {stok stok {char symbol [5]; int miktarı; yüzer fiyat; struct stock * bir sonraki;}; yapısal hisse senedi * ilk; yapı stok * akım; yapısal hisse senedi * yeni; / * Bellekte yapı oluştur * / ilk = (struct stock *) malloc (sizeof (struct stock))); if (first == NULL) {puts ("Bir çeşit malloc () hatası"); exit (1);} / * Yapı verisine atama * / current = first; strcpy (şimdiki - sembol, "GOOG"); akım> miktarı = 100; akım> fiyat = 801. 19; akım> aşağıdaki = NULL; yeni = (yapı stok *) malloc (sizeof (yapı stok)); if (new == NULL) {puts ("Başka malloc () hatası"); exit (1);} current-> next = new; = Yeni akım; strcpy (şimdiki -> sembol, "MSFT"); akım> miktarı = 100; akım> fiyat = 28. 77; akım> aşağıdaki = NULL; / * Veritabanı görüntüle * / koyar ("Yatırım Portföyü"); Printf ("SymboltSharestPricetValuen"); birinci akım =; printf ("% -% 6st% 5dt% 2ft%. 2fn", akım-> sembol, akım-> miktar, akım-> fiyat, akım-> miktar * akım-> fiyat); akım = akım> aşağıdaki; printf ("% -% 6st% 5dt% 2ft%. 2fn", akım-> sembol, akım-> miktar, akım-> fiyat, akım-> miktar * akım-> fiyat); return (0);}

Bu kaynak kodu oldukça uzun, ancak ilki ile bağlantılı ikinci bir yapı oluşturuyor. Kaynak kodun boyunun sizi korkutmasına izin verme.

13'ten 15'e kadar olan satırlar, bağlantılı liste dansı için gerekli olan standart üç yapı işaretçisini beyan eder. Geleneksel olarak, bunlar önce, güncel ve yeni seçilir. Yapıdaki dördüncü üyeye, ardından bir yapı işaretçisi olan Satır 11'de buldular.

Bağlantılı bir liste oluştururken yeni bir yapı değişkeni tanımlamak için typedef'i kullanmayın. Primitive Linked List Örneği, typedef'i kullanmaz, bu nedenle kodla ilgili bir sorun değil, ancak birçok C programcısı, typedef'i yapılarla birlikte kullanıyor. Dikkatli ol!

Line 15'te kullanılan değişken adı new, C ++'da ayrılmış bir kelimedir, bu nedenle iki dilli olmasını istiyorsanız, değişken adını new_struct veya yeni kelime dışındaki bir şeye değiştirin.

İlk yapı doldurulduğunda, Satır 30 bir sonraki öğeye bir NULL işaretçisi atar.Bu NULL değeri bağlantılı listenin sonlarını kapar.

Satır 32, adresini yeni işaretçi değişkene yerleştiren bir yapı oluşturur. Adres, Satır 38'deki ilk yapıya kaydedilir. İkinci yapının konumu bu şekilde korunur.

40'dan 43'e kadar olan satırlar, 43. satırdaki bir sonraki öğeye bir BOş değer atanarak ikinci işaretçi için bilgi doldurur.

Bağlar yapıların içeriği görüntülendiğinde gerçekleşir. Satır 48, ilk yapının adresini yakalar. Ardından 54 nolu çizgi, bir sonraki yapının adresini ilk yapıdan yakalar.

Alıştırma 1 : İlkel Bağlantılı Liste Örneği kaynak kodunu düzenleyiciye yazın. Uzun olsa da, daha sonradan düzenlemeniz gerekeceği için yazın (şimdiye kadar buna alışkın değilseniz). Kurun ve çalıştırın.

Dizilerden farklı olarak, bağlantılı bir listedeki yapılar numaralandırılmamıştır. Bunun yerine, her yapı listedeki bir sonraki yapıya bağlanır. İlk yapının adresini bildiğiniz sürece, NULL ile işaretlenmiş sonuna kadar listede çalışabilirsiniz.

İlkel Bağlantılı Liste Örneği, çok sayıda tekrarlanan kod içeren bazı özensiz kaynak kodlarını gösterir. Kodunuzda bunun gibi birden fazla ifade gördüğünüzde, hemen "işlevleri" düşünmelisiniz. "

DAHA İYİ BİRLEŞTİRİLMİŞ LİSTE ÖRNEK

#include #include #include #define ITEMS 5 yapı stoku {char symbol [5]; int miktarı; yüzer fiyat; struct stock * bir sonraki;}; yapısal hisse senedi * ilk; yapı stok * akım; yapısal hisse senedi * yeni; struct stock * make_structure (void); void fill_structure (struct stock * a, int c); void show_structure (yapı stok * a); int main () {int x; / * Görüntülenen veritabanı * / puts ("Yatırım Portföyü"); printf ("SymboltSharestPricetValuen (" Yatırım Portföyü "); "); struct hisse * make_structure (void) {struct hisse senedi * a; a (struct hisse senedi *);) void fill_structure (struct stock * a (); void fill_structure (struct hisse * a); void fill_structure (struct hisse * a);, int c) printf ("Stok simgesi:"); scanf ("% s", a-> sembol); printf ("Sayı scanf ("% f", & a-> fiyata);} void show_structure (struct stock * a) hisse senedi sayısı: "scanf ("% d ", & a-> miktar); printf  sembol, a-> miktar, a-> fiyat, a-> miktar * a-> fiyat);}

En bağlantılı listeler A Better Linked-List Example'de gösterildiği gibi oluşturulmuştur Anahtar, 13-15 arasındaki satırlarda gösterilen üç yapı değişkenini kullanmaktır:

  • önce her zaman adresini listesindeki ilk yapının Her zaman.

  • current, üzerinde çalışılan, veriyle doldurulan ya da görüntülenen yapının adresini içerir.

  • new, malloc () işlevini kullanarak oluşturulan yeni bir yapının adresidir.

Satır 7, stok yapısını küresel ilan eder. Bu şekilde, çeşitli işlevlerden erişilebilir.

25 ve 39 Satırlar arasındaki for döngüsü, bunları birbirine bağlayan yeni yapılar oluşturur.Başlangıç ​​yapısı özel, bu nedenle adres 30 Satır'da saklanır. Aksi halde make_structure () işlevi sayesinde yeni bir yapı atanır.

Satır 35'de önceki yapı güncellenir; akım değeri 36 Satır'a kadar değiştirilmez. Bu gerçekleşmeden önce, geçerli yapıdaki işaretçi yeni yapıdaki adresle güncellenir.

Satır 40'da, son yapıdaki yeni işaretçiyi NULL olarak sıfırlayarak bağlantılı listenin sonuna işaretlenir.

46. satırdaki while döngüsü, bağlantılı listedeki tüm yapıları görüntüler. Döngünün durumu geçerli göstericinin değeri. NULL ile karşılaşıldığında döngü durur.

Daha İyi Bağlı Liste Örneği'nde gösterilen kodun geri kalanı, kendine açık olan işlevlerden oluşur.

Alıştırma 2 : Daha İyi Bağlı Liste Örnekindeki kodu düzenleyiciye kopyalayın. Kurun ve çalıştırın.

fill_structure () işlevindeki scanf () ifadelerine dikkat edin. Unutmayın -> işaretçi için "peeker" gösterimdir. Adres almak için, değişkene scanf () işlevinde bir & ile önek eklemelisiniz.

C Programlamada Bağlı Liste Nasıl Oluşturulur - Cümlenin içinde

Editörün Seçimi

Ile Web Sunucusunda Drupal Yükleme Softaculous ile Bir Web Sunucusuna Drupal Yükleme

Ile Web Sunucusunda Drupal Yükleme Softaculous ile Bir Web Sunucusuna Drupal Yükleme

Birçok web barındırma şirketi, Fantastico veya Softaculous adlı programları kullanarak kolay Drupal kurulumu. Barındırma şirketiniz Softaculous'u kullanıyorsa, işte böyle çalışır. Drupal topluluğu, Softaculous veya Fantastico gibi üçüncü parti yazılımlarla Drupal'ın yüklenmesini önermez. Bunu yapmak, yükseltmeyi zorlaştırabilir ve veritabanlarınızdaki sorunlara potansiyel olarak neden olabilir ...

Drupal Bahçe Site Kullanıcılarını Yönetme - mankenler

Drupal Bahçe Site Kullanıcılarını Yönetme - mankenler

Drupal Gardens'daki People sayfası, kullanıcıları, düzenli bir Drupal kurulumunda olurdunuz. Kullanıcıları bulabilir, rolleri engelleyebilir ve engelini kaldırabilir, silebilir ve atayabilirsiniz. Kullanıcıları yönetmek için Kişiler bağlantısını tıklayın. Liste sekmesi varolan kullanıcıları bulmanıza yardımcı olur ve İzinler sekmesi rolleri oluşturmanıza izin verir ve ...

Drupal kurulumu: Yazılım Alma - mankenler

Drupal kurulumu: Yazılım Alma - mankenler

Web barındırıcınız Fantastico veya Softaculous kullanmıyorsa, ilk Drupal'ı yüklemek için adım Drupal'ın en son sürümünün bir kopyasını alıyor ve web sunucunuza taşıyor. Paketi indirmek Drupal yazılımının kopyasını almak özgür ve kolaydır. Şu adımları izleyin: Drupal'a göz atın. org ve tıklayın ...

Editörün Seçimi

OAuth Kodlarını Android Uygulamanızla Twitter Sunucusuyla Görüşecek - aumlalar

OAuth Kodlarını Android Uygulamanızla Twitter Sunucusuyla Görüşecek - aumlalar

Android uygulamanızın Twitter sunucularıyla iletişim kurması için kendi OAuth kodlarınıza ihtiyacınız var. Onları almak için, aşağıda listelenen basit adımları uygulayın ve kendi Twitter uygulamasını geliştirmeye gideceksiniz. Twitter, herhangi bir zamanda önceden bildirimde bulunmaksızın web sitesinin tasarımını değiştirebilir. Twitter'da oturum açın ...

Xcode Kaynak Düzenleyici ile Başlarken - mankenler

Xcode Kaynak Düzenleyici ile Başlarken - mankenler

Yazarken kullandığınız ana araç bir iPad uygulaması için kod, Proje gezgini içinde bir kaynak kodu dosyası seçtikten sonra Xcode Çalışma Alanı penceresinin sağ tarafındaki Düzenleyici alanında Standart düzenleyici bölmesi olarak görünen Xcode kaynak editörüdür. Ayrıca Asistan editörü gibi görünür ...

Editörün Seçimi

App'unuzu Geliştirmek İçin Android Animasyon Nasıl Kullanılır

App'unuzu Geliştirmek İçin Android Animasyon Nasıl Kullanılır

Android uygulamanızda biraz süslü animasyona ihtiyacımız var. Bu, umut veren bir hırsı gösteriyor! Android, uygulamanızın geliştirilmesinde kullanabileceğiniz iki tür animasyona sahiptir: Animasyonu görüntüle: Bu listede açıklandığı üzere ya arayı doldurarak veya kare kare animasyonla canlandırdığınız eski bir sistem: Arası doldurma: ...

IPad Uygulamalarınızda Çerçeveler Nasıl Kullanılır - AYDINLATMALAR

IPad Uygulamalarınızda Çerçeveler Nasıl Kullanılır - AYDINLATMALAR

Genel işlevsellik. IPad için iPhone OS, uygulamalarınıza teknolojileri, hizmetleri ve özellikleri dahil etmek için bir dizi çerçeve sunmaktadır. Örneğin, UIKit çerçevesi, uygulamanızda kullanabileceğiniz destek olayları, çizim desteği, pencereler, görünümler ve denetimler sağlar. Bir çerçeve, aşağıdakileri yapmak üzere tasarlanmıştır ...