Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Các cấu trúc dữ liệu.






Mộ t cấ u trú c dữ liệ u là mộ t tậ p hợ p củ a nhữ ng kiể u dữ liệ u khá c nhau đ ư ợ c gộ p lạ i vớ i mộ t cá i tê n duy nhấ t. Dạ ng thứ c củ a nó như sau:

struct model_name { type1 element1; type2 element2; type3 element3 ;..} object_name;

trong đ ó model_name là tê n củ a mẫ u kiể u dữ liệ u và tham số tù y chọ n object_name mộ t tê n hợ p lệ cho đ ố i tư ợ ng. Bê n trong cặ p ngoặ c nhọ n là tê n cá c phầ n tử củ a cấ u trú c và kiể u củ a chú ng.

Nế u đ ị nh nghĩ a củ a cấ u trú c bao gồ m tham số model_name (tuỳ chọ n), tham số nà y trở thà nh mộ t tê n kiể u hợ p lệ tư ơ ng đ ư ơ ng vớ i cấ u trú c. Ví dụ:

struct products { char name [30]; float price; }; products apple; products orange, melon;

Chú ng ta đ ã đ ị nh nghĩ a cấ u trú c products vớ i hai trư ờ ng: name price , mỗ i trư ờ ng có mộ t kiể u khá c nhau. Chú ng ta cũ ng đ ã sử dụ ng tê n củ a kiể u cấ u trú c ( products ) đ ể khai bá o ba đ ố i tư ợ ng có kiể u đ ó: apple , orange melon .

Sau khi đ ư ợ c khai bá o, products trở thà nh mộ t tê n kiể u hợ p lệ giố ng cá c kiể u cơ bả n như int, char hay short.

Trư ờ ng tuỳ chọ n object_name có thể nằ m ở cuố i củ a phầ n khai bá o cấ u trú c dù ng đ ể khai bá o trự c tiế p đ ố i tư ợ ng có kiể u cấ u trú c. Ví dụ, đ ể khai bá o cá c đ ố i tư ợ ng apple , orange melon như đ ã là m ở phầ n trư ớ c chú ng ta cũ ng có thể là m theo cá ch sau:

struct products { char name [30]; float price; } apple, orange, melon;

Hơ n nữ a, trong trư ờ ng hợ p nà y tham số model_name trở thà nh tuỳ chọ n. Mặ c dù nế u model_name khô ng đ ư ợ c sử dụ ng thì chú ng ta sẽ khô ng thể khai bá o thê m cá c đ ố i tư ợ ng có kiể u mẫ u nà y.

Mộ t đ iề u quan trọ ng là cầ n phâ n biệ t rõ rà ng đ â u là kiể u mẫ u cấ u trú c, đ â u là đ ố i tư ợ ng cấ u trú c. Nế u dù ng cá c thuậ t ngữ chú ng ta đ ã sử dụ ng vớ i cá c biế n, kiể u mẫ u là tê n kiể u dữ liệ u cò n đ ố i tư ợ ng là cá c biế n.

Sau khi đ ã khai bá o ba đ ố i tư ợ ng có kiể u là mộ t mẫ u cấ u trú c xá c đ ị nh ( apple , orange and melon ) chú ng ta có thể thao tá c vớ i cá c trư ờ ng tạ o nê n chú ng. Đ ể là m việ c nà y chú ng ta sử dụ ng mộ t dấ u chấ m (.) chè n ở giữ a tê n đ ố i tư ợ ng và tê n trư ờ ng. Ví dụ, chú ng ta có thể thao tá c vớ i bấ t kì phầ n tử nà o củ a cấ u trú c như là đ ố i vớ i cá c biế n chuẩ n:

apple.name
apple.price
orange.name
orange.price
melon.name
melon.price

mỗ i trư ờ ng có kiể u dữ liệ u tư ơ ng ứ ng: apple.name , orange.name melon.name có kiể u char[30] , và apple.price , orange.price melon.price có kiể u float .

Chú ng ta tạ m biệ t apples, oranges và melons đ ể đ ế n vớ i mộ t ví dụ về cá c bộ phim:

// example about structures #include < iostream.h> #include < string.h> #include < stdlib.h> struct movies_t { char title [50]; int year; } mine, yours; void printmovie (movies_t movie); int main (){ char buffer [50]; strcpy (mine.title, " 2001 A Space Odyssey"); mine.year = 1968; cout < < " Enter title: "; cin.getline (yours.title, 50); cout < < " Enter year: "; cin.getline (buffer, 50); yours.year = atoi (buffer); cout < < " My favourite movie is: \n "; printmovie (mine); cout < < " And yours: \n "; printmovie (yours); return 0; } void printmovie (movies_t movie){ cout < < movie.title; cout < < " (" < < movie.year < < ")\n"; } Enter title: Alien Enter year: 1979 My favourite movie is: 2001 A Space Odyssey (1968) And yours: Alien (1979)

Ví dụ nà y cho chú ng ta thấ y cá ch sử dụ ng cá c phầ n tử củ a mộ t cấ u trú c và bả n thâ n cấ u trú c như là cá c biế n thô ng thư ờ ng. Ví dụ, yours.year là mộ t biế n hợ p lệ có kiể u int cũ ng như mine.title là mộ t mả ng hợ p lệ vớ i 50 phầ n tử kiể u chars.

Chú ý rằ ng cả mine and yours đ ề u đ ư ợ c coi là cá c biế n hợ p lệ kiể u movie_t khi đ ư ợ c truyề n cho hà m printmovie() .Hơ n nữ a mộ t lợ i thế quan trọ ng củ a cấ u trú c là chú ng ta có thể xé t cá c phầ n tử củ a chú ng mộ t cá ch riê ng biệ t hoặ c toà n bộ cấ u trú c như là mộ t khố i.

Cá c cấ u trú c đ ư ợ c sử dụ ng rấ t nhiề u đ ể xâ y dự ng cơ sở dữ liệ u đ ặ c biệ t nế u chú ng ta xé t đ ế n khả nă ng xâ y dự ng cá c mả ng củ a chú ng.

// array of structures #include < iostream.h> #include < stdlib.h> #define N_MOVIES 5 struct movies_t { char title [50]; int year; } films [N_MOVIES]; void printmovie (movies_t movie); int main (){ char buffer [50]; int n; for (n=0; n< N_MOVIES; n++) { cout < < " Enter title: "; cin.getline (films[n].title, 50); cout < < " Enter year: "; cin.getline (buffer, 50); films[n].year = atoi (buffer); } cout < < " \nYou have entered these movies: \n"; for (n=0; n< N_MOVIES; n++) printmovie (films[n]); return 0; } void printmovie (movies_t movie){ cout < < movie.title; cout < < " (" < < movie.year < < ")\n"; } Enter title: Alien Enter year: 1979 Enter title: Blade Runner Enter year: 1982 Enter title: Matrix Enter year: 1999 Enter title: Rear Window Enter year: 1954 Enter title: Taxi Driver Enter year: 1975 You have entered these movies: Alien (1979) Blade Runner (1982) Matrix (1999) Rear Window (1954) Taxi Driver (1975)

Поделиться с друзьями:

mylektsii.su - Мои Лекции - 2015-2024 год. (0.011 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал