Giáo trình Ngôn ngữ lập trình C: Phần 2
Số trang: 143
Loại file: pdf
Dung lượng: 10.12 MB
Lượt xem: 16
Lượt tải: 0
Xem trước 10 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Nối tiếp nội dung phần 1, phần 2 cuốn giáo trình Ngôn ngữ lập trình C cung cấp cho người học các kiến thức: Mảng, cấu trúc, kiểu enum và union, tệp. Cuối sách còn có phần bài tập thực hành để người học ôn tập và củng cố kiến thức.
Nội dung trích xuất từ tài liệu:
Giáo trình Ngôn ngữ lập trình C: Phần 2 C h ư ơ n g 9MẢNGì. GIỚI THIỆU CHUNG T r o n g h ầ u n h ư m ọ i n g ô n n g ữ l ậ p t r ì n h bậc cao đ ề u c ó c ấ u t r ú c d ữ l i ệ u k i ể umảng. T ừ c á c c ấ u t r ú c d ữ l i ệ u đ ơ n g i ả n n h ư số n g u y ê n , s ố thực, k ý tự, v i ệ chình t h à n h k i ể u d ữ l i ệ u m ả n g c ó t h ể nói là rất t ự n h i ê n v à là m ộ t y ê u c ầ u t h i ế tyếu k h i c ầ n t h i ế t p h ả i g i ả i q u y ế t c á c bài t o á n c ó thuật t o á n bắt đ ầ u trở n ê nphức t ạ p m à v i ệ c sử d ụ n g c á c d ữ l i ệ u đ ơ n g i ả n k h ô n g c ò n h i ệ u q u ả nữa. T r o n gc, mặc d ù v i ệ c sử d ụ n g con t r ỏ tạo n ê n m ộ t c ô n g cụ r ấ t m ạ n h , trong n h i ề utrường hợp c ó t h ể b ỏ qua cấu t r ú c m ả n g , n h ư n g v ẫ n c ó m ả n g , v à v i ệ c t h ể h i ệ nnhiều thuật t o á n t h ô n g qua cấu t r ú c m ả n g đ ơ n g i ả n , d ễ h i ể u h ơ n n h i ề u so v ớ iviệc sử d ụ n g con t r ỏ . 1. Đ ị n h n g h ĩ a M ả n g là m ộ t t ổ chức d ữ l i ệ u liên tục, trong đ ó c ó m ộ t s ố h ữ u h ạ n c á c p h ầ ntử d ữ l i ệ u c ù n g k i ể u v ớ i nhau, đ ư ợ c sắp x ế p c ó t h ứ tự. T h ứ t ự của c á c p h ầ n t ửtrong m ả n g g ọ i là chỉ số. V i ệ c truy x u ấ t v à o m ỗ i p h ầ n t ử đ ư ợ c thực h i ệ n t h ô n gqua m ộ t hoặc n h i ề u chỉ số. N ế u k h ô n g quan t â m t ớ i t ổ chức b ộ n h ớ của m ả n g thì c ó t h ể h i ể u m ộ t c á c hđơn g i ả n là: M ả n g là m ộ t d ã y c á c b i ế n c ù n g t ê n , c ù n g k i ể u đ ư ợ c p h â n b i ệ tbằng m ộ t hoặc m ộ t s ố chỉ số. 2. P h â n l o ạ i M ả n g bao g i ờ c ũ n g g ắ n l i ề n v ớ i m ộ t k i ể u d ữ l i ệ u đ ã đ ư ợ c đ ị n h nghĩa t ừtrước. Đ ó là k i ể u của c á c p h ầ n tử. K i ể u của m ỗ i p h ầ n t ử c ó t h ể là m ộ t k i ể uchuẩn của c , c ũ n g c ó t h ể là m ộ t k i ể u do n g ư ờ i d ù n g đ ị n h nghĩa, v à rất c ó t h ểđ ó l ạ i là m ộ t k i ể u m ả n g . D o đ ó c ó t h ể p h â n l o ạ i m ả n g theo k i ể u d ữ l i ệ u . 151 T u y n h i ê n , n g ư ờ i ta hay p h â n l o ạ i m ả n g theo s ố c h i s ố c ầ n t h i ế t đ ể truyx u ấ t v à o c á c p h ầ n tử, ta g ọ i là số c h i ề u . M á n g Ì c h i ề u là m á n g t r o n g đ ó c ó N p h ầ n t ử đ ư ợ c sắp x ế p t u y ế n t í n h , cóm ộ t p h ầ n t ử đ ầ u t i ê n đ ư ợ c g h i chỉ số 0, m ộ t p h ầ n t ử c u ố i c ù n g c ó chỉ số bằngN - Ì. M ỗ i p h ầ n t ử c ò n l ạ i c ó chỉ s ố i v à l u ô n đ ứ n g trước m ộ t p h ầ n t ừ c ó chỉ sối + Ì v à đ ứ n g sau m ộ t p h ầ n t ử c ó chỉ s ố i - Ì . M ả n g 2 c h i ề u là M m ả n g Ì c h i ề u c ó N p h ầ n t ử x ế p k ế t i ế p nhau. M ỗ i phầntử vì v ậ y đ ư ợ c coi n h ư đ ứ n g trong m ộ t b ả n g c ó M h à n g v à N c ộ t . C ầ n p h ả i cóhai chỉ s ố đ ể t r u y cập m ộ t p h ầ n tử, chỉ s ố h à n g là i c ó g i á trị t ừ 0 đ ế n M - Ì, chisố t h ứ c ộ t là j c ó g i á trị t ừ 0 đ ế n N - Ì . Chú ý đến đặc điểm mảng là tổ chức dữ liệu liên tục, la hoàn toàn có thểcoi mảng hai chiều M hàng N cột như mảng một chiêu có MxN phần tử, trongđó mồi phần tử trên hàng i cột ị của mảng 2 chiều sẽ cố chỉ số k = i*N + ị. T ư ơ n g t ự n h ư t h ế , m ả n g n c h i ề u là m ả n g Ì c h i ề u của c á c m ả n g (n - 1)c h i ề u và c ầ n c ó n c h í số đ ế t r u y cập v à o Ì p h ầ n tử. 3. Ư u n h ư ợ c đ i ể m c ủ a c ấ u t r ú c mảng 3.1. Ư u đ i ể m M ả n g là m ộ t c ấ u t r ú c d ữ l i ệ u c ó n h i ề u ứng d ụ n g thực t ế . N h ữ n g b à i toántrong đ ó c ó n h i ề u d ữ l i ệ u c ù n g k i ể u và c ó vai t r ò g i ố n g nhau t h ư ờ n g t ổ chức d ữl i ệ u d ư ớ i d ạ n g m ả n g . N g ư ờ i l ậ p t r ì n h t ự do truy cập m ộ t p h ầ n t ử bất k ỳ trongm ả n g n h ờ c á c chỉ s ố v ớ i m ứ c đ ộ t h u ậ n l ợ i n h ư nhau bất k ể p h ầ n t ử đ ó n ằ m ở vịtrí n à o trong m ả n g . Đ i ề u n à y k ế t hợp v ớ i c ấ u t r ú c l ặ p l à m cho b à i t o á n t r ở n ê nđ ơ n g i ả n h ơ n n h i ề u . T r o n g s ố c á c cấu t r ú c danh s á c h thì m ả n g là l o ạ i danhs á c h d ễ sử d ụ n g nhất, t h u ậ n t i ệ n nhất. C ó t h ể d u y ệ t danh s á c h theo c h i ề u n à ocũng được. 3.2. N h ư ợ c đ i ể m M ả n g t h ư ờ n g k é m m ề m d ẻ o và n h i ề u k h i l ã n g p h í . C ó c h ư ơ n g t r ì n h l à mviệc tốt v ớ i c á c b à i t o á n n h ỏ , k h i gặp c á c b à i t o á n l ớ n t h ì s ố p h ầ n t ử m ả n gk h ô n g đ ủ đ á p ứng. K h i l ậ p t r ì n h k h a i b á o m ả n g k í c h t h ư ớ c l ớ n đ ể đ á p ứngđược n h i ề u c ỡ b à i t o á n thì p h ầ n l ớ n c á c b à i t o á n chỉ c ầ n sử d ụ n g c h ư a đ ế ...
Nội dung trích xuất từ tài liệu:
Giáo trình Ngôn ngữ lập trình C: Phần 2 C h ư ơ n g 9MẢNGì. GIỚI THIỆU CHUNG T r o n g h ầ u n h ư m ọ i n g ô n n g ữ l ậ p t r ì n h bậc cao đ ề u c ó c ấ u t r ú c d ữ l i ệ u k i ể umảng. T ừ c á c c ấ u t r ú c d ữ l i ệ u đ ơ n g i ả n n h ư số n g u y ê n , s ố thực, k ý tự, v i ệ chình t h à n h k i ể u d ữ l i ệ u m ả n g c ó t h ể nói là rất t ự n h i ê n v à là m ộ t y ê u c ầ u t h i ế tyếu k h i c ầ n t h i ế t p h ả i g i ả i q u y ế t c á c bài t o á n c ó thuật t o á n bắt đ ầ u trở n ê nphức t ạ p m à v i ệ c sử d ụ n g c á c d ữ l i ệ u đ ơ n g i ả n k h ô n g c ò n h i ệ u q u ả nữa. T r o n gc, mặc d ù v i ệ c sử d ụ n g con t r ỏ tạo n ê n m ộ t c ô n g cụ r ấ t m ạ n h , trong n h i ề utrường hợp c ó t h ể b ỏ qua cấu t r ú c m ả n g , n h ư n g v ẫ n c ó m ả n g , v à v i ệ c t h ể h i ệ nnhiều thuật t o á n t h ô n g qua cấu t r ú c m ả n g đ ơ n g i ả n , d ễ h i ể u h ơ n n h i ề u so v ớ iviệc sử d ụ n g con t r ỏ . 1. Đ ị n h n g h ĩ a M ả n g là m ộ t t ổ chức d ữ l i ệ u liên tục, trong đ ó c ó m ộ t s ố h ữ u h ạ n c á c p h ầ ntử d ữ l i ệ u c ù n g k i ể u v ớ i nhau, đ ư ợ c sắp x ế p c ó t h ứ tự. T h ứ t ự của c á c p h ầ n t ửtrong m ả n g g ọ i là chỉ số. V i ệ c truy x u ấ t v à o m ỗ i p h ầ n t ử đ ư ợ c thực h i ệ n t h ô n gqua m ộ t hoặc n h i ề u chỉ số. N ế u k h ô n g quan t â m t ớ i t ổ chức b ộ n h ớ của m ả n g thì c ó t h ể h i ể u m ộ t c á c hđơn g i ả n là: M ả n g là m ộ t d ã y c á c b i ế n c ù n g t ê n , c ù n g k i ể u đ ư ợ c p h â n b i ệ tbằng m ộ t hoặc m ộ t s ố chỉ số. 2. P h â n l o ạ i M ả n g bao g i ờ c ũ n g g ắ n l i ề n v ớ i m ộ t k i ể u d ữ l i ệ u đ ã đ ư ợ c đ ị n h nghĩa t ừtrước. Đ ó là k i ể u của c á c p h ầ n tử. K i ể u của m ỗ i p h ầ n t ử c ó t h ể là m ộ t k i ể uchuẩn của c , c ũ n g c ó t h ể là m ộ t k i ể u do n g ư ờ i d ù n g đ ị n h nghĩa, v à rất c ó t h ểđ ó l ạ i là m ộ t k i ể u m ả n g . D o đ ó c ó t h ể p h â n l o ạ i m ả n g theo k i ể u d ữ l i ệ u . 151 T u y n h i ê n , n g ư ờ i ta hay p h â n l o ạ i m ả n g theo s ố c h i s ố c ầ n t h i ế t đ ể truyx u ấ t v à o c á c p h ầ n tử, ta g ọ i là số c h i ề u . M á n g Ì c h i ề u là m á n g t r o n g đ ó c ó N p h ầ n t ử đ ư ợ c sắp x ế p t u y ế n t í n h , cóm ộ t p h ầ n t ử đ ầ u t i ê n đ ư ợ c g h i chỉ số 0, m ộ t p h ầ n t ử c u ố i c ù n g c ó chỉ số bằngN - Ì. M ỗ i p h ầ n t ử c ò n l ạ i c ó chỉ s ố i v à l u ô n đ ứ n g trước m ộ t p h ầ n t ừ c ó chỉ sối + Ì v à đ ứ n g sau m ộ t p h ầ n t ử c ó chỉ s ố i - Ì . M ả n g 2 c h i ề u là M m ả n g Ì c h i ề u c ó N p h ầ n t ử x ế p k ế t i ế p nhau. M ỗ i phầntử vì v ậ y đ ư ợ c coi n h ư đ ứ n g trong m ộ t b ả n g c ó M h à n g v à N c ộ t . C ầ n p h ả i cóhai chỉ s ố đ ể t r u y cập m ộ t p h ầ n tử, chỉ s ố h à n g là i c ó g i á trị t ừ 0 đ ế n M - Ì, chisố t h ứ c ộ t là j c ó g i á trị t ừ 0 đ ế n N - Ì . Chú ý đến đặc điểm mảng là tổ chức dữ liệu liên tục, la hoàn toàn có thểcoi mảng hai chiều M hàng N cột như mảng một chiêu có MxN phần tử, trongđó mồi phần tử trên hàng i cột ị của mảng 2 chiều sẽ cố chỉ số k = i*N + ị. T ư ơ n g t ự n h ư t h ế , m ả n g n c h i ề u là m ả n g Ì c h i ề u của c á c m ả n g (n - 1)c h i ề u và c ầ n c ó n c h í số đ ế t r u y cập v à o Ì p h ầ n tử. 3. Ư u n h ư ợ c đ i ể m c ủ a c ấ u t r ú c mảng 3.1. Ư u đ i ể m M ả n g là m ộ t c ấ u t r ú c d ữ l i ệ u c ó n h i ề u ứng d ụ n g thực t ế . N h ữ n g b à i toántrong đ ó c ó n h i ề u d ữ l i ệ u c ù n g k i ể u và c ó vai t r ò g i ố n g nhau t h ư ờ n g t ổ chức d ữl i ệ u d ư ớ i d ạ n g m ả n g . N g ư ờ i l ậ p t r ì n h t ự do truy cập m ộ t p h ầ n t ử bất k ỳ trongm ả n g n h ờ c á c chỉ s ố v ớ i m ứ c đ ộ t h u ậ n l ợ i n h ư nhau bất k ể p h ầ n t ử đ ó n ằ m ở vịtrí n à o trong m ả n g . Đ i ề u n à y k ế t hợp v ớ i c ấ u t r ú c l ặ p l à m cho b à i t o á n t r ở n ê nđ ơ n g i ả n h ơ n n h i ề u . T r o n g s ố c á c cấu t r ú c danh s á c h thì m ả n g là l o ạ i danhs á c h d ễ sử d ụ n g nhất, t h u ậ n t i ệ n nhất. C ó t h ể d u y ệ t danh s á c h theo c h i ề u n à ocũng được. 3.2. N h ư ợ c đ i ể m M ả n g t h ư ờ n g k é m m ề m d ẻ o và n h i ề u k h i l ã n g p h í . C ó c h ư ơ n g t r ì n h l à mviệc tốt v ớ i c á c b à i t o á n n h ỏ , k h i gặp c á c b à i t o á n l ớ n t h ì s ố p h ầ n t ử m ả n gk h ô n g đ ủ đ á p ứng. K h i l ậ p t r ì n h k h a i b á o m ả n g k í c h t h ư ớ c l ớ n đ ể đ á p ứngđược n h i ề u c ỡ b à i t o á n thì p h ầ n l ớ n c á c b à i t o á n chỉ c ầ n sử d ụ n g c h ư a đ ế ...
Tìm kiếm theo từ khóa liên quan:
Giáo trình Ngôn ngữ lập trình C Ngôn ngữ lập trình C Ngôn ngữ lập trình Kỹ thuật lập trình Cấu trúc dữ liệu Tệp dữ liệuGợi ý tài liệu liên quan:
-
Đề cương chi tiết học phần Cấu trúc dữ liệu và giải thuật (Data structures and algorithms)
10 trang 313 0 0 -
Giáo trình Lập trình hướng đối tượng: Phần 2
154 trang 270 0 0 -
Kỹ thuật lập trình trên Visual Basic 2005
148 trang 260 0 0 -
Bài thuyết trình Ngôn ngữ lập trình: Hệ điều hành Window Mobile
30 trang 260 0 0 -
Giáo trình Lập trình cơ bản với C++: Phần 1
77 trang 230 0 0 -
Bài giảng Một số hướng nghiên cứu và ứng dụng - Lê Thanh Hương
13 trang 220 0 0 -
Giáo án Tin học lớp 11 (Trọn bộ cả năm)
125 trang 213 1 0 -
NGÂN HÀNG CÂU HỎI TRẮC NGHIỆM THIẾT KẾ WEB
8 trang 202 0 0 -
101 trang 199 1 0
-
Giới thiệu môn học Ngôn ngữ lập trình C++
5 trang 192 0 0