1. Trang chủ
  2. » Công Nghệ Thông Tin

Bàn về stack pdf

3 114 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 3
Dung lượng 520,27 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Thật ra, bạn có thể hiểu stack như là 1 cái thùng đựng sách.. Bạn bỏ từ từ sách vào, có phải sách nào bạn bỏ vào cuối cùng cũng nằm ở trên đầu thùng không?. Giả sử bạn đã được học qua về

Trang 1

Stack là gì nhỉ? À ừm, theo nghĩa tiếng Anh nó có nghĩa là “đống”, hi,dịch vậy thì hơi ngố bạn nhỉ? Thật

ra, bạn có thể hiểu stack như là 1 cái thùng đựng sách Bạn bỏ từ từ sách vào, có phải sách nào bạn bỏ vào cuối cùng cũng nằm ở trên đầu thùng không? Có nghĩa là đưa vào sau nhưng lấy ra trước (LIFO – Last

In First Out)

Giả sử bạn đã được học qua về stack khi còn mài đũng quần để học cấu trúc dữ liệu cách đây mấy năm, từ hồi còn “write on C” Chắc hẳn trước khi sử dụng, bạn phải tạo ra cho mình một cấu trúc dữ liệu để mô tả stack trong lập trình Nhưng nay, với C#, bạn sẽ không phải mò mẫm từng quyển sách cấu trúc dữ liệu để

ôn lại cách cài đặt stack khi bỗng dưng quên mất, mà công việc lúc này của bạn lúc này chỉ đơn giản là…lấy mà xài thông qua class Stack nằm trong namespace System.Collections

Sau đây là các thuộc tính và phương thức thông dụng của class Stack:

Code:

PUBLIC PROPERTIES – CÔNG DỤNG

Count : trả về số phần tử hiện được lưu trữ trên Stack

IsSyncronized: trả về một trị bool cho biết liệu xem việc truy xuất Stack có đồng bộ hay không?

SyncRoot: trả về một đối tượng có thể được dùng đồng bộ hóa việc truy xuất stack

PUBLIC METHODS-CÔNG DỤNG

Clear: gỡ bỏ tất cả các phần tử từ stack

Clone: tạo một bản sao của stack

Contains: xác định xem 1 phần tử có nằm trên stack hay không?

CopyTo: sao các phần tử của stack hoặc 1 phần tử của nó lên mảng 1 chiều khởi đi từ một chỉ số chỉ định

Peek: trả đối tượng về đầu hàng nối đuôi Stack không gỡ bỏ nó đi

Pop: gỡ bỏ và trả về 1 đối tượng về đầu hàng của stack

Push: thêm 1 đối tượng vào đầu hàng stack

ToArray: copy các phần tử của stack qua một bản dãy mới

Để hiểu hơn về stack, chúng ta sẽ rảo qua 2 ví dụ sau: (ứng dụng dạng console)

Ví dụ 1 (lấy từ MSDN)

Code:

using System;

using System.Collections;

public class SamplesStack

{

public static void Main()

{

// tạo một thể hiện của lớp Stack là myStack

Stack myStack = new Stack();

myStack.Push("Hello"); // nhét chữ “Hello” vào stack

myStack.Push("World"); // nhét chữ “World” vào stack

myStack.Push("!"); „‟ chữ “!” vào stack

Trang 2

// Hiển thị thuộc tính và giá trị của stack

Console.WriteLine( "myStack" );

Console.WriteLine( "\tCount: {0}", myStack.Count ); // in ra số phần //tử của stack

Console.Write( "\tValues:" );

PrintValues( myStack ); // hàm PrintValues sẽ in ra các giá trị trong stack

}

public static void PrintValues( IEnumerable myCollection ) //xây dựng //hàm in các giá trị trong stack

{

foreach ( Object obj in myCollection )

Console.Write( " {0}", obj );

Console.WriteLine();

}

}

Kết quả sẽ xuất ra màn hình console dòng chữ:

myStack

Count: 3

Values: ! World Hello

Ví dụ 2:

Code:

using System;

using System.Collections;

using System.Collections.Generic;

using System.Text;

namespace ConsoleApplication1

{

classProgram

{

publicstaticvoid InGiaTri(IEnumerable myCollection)

{

IEnumerator myEnumerator = myCollection.GetEnumerator();

while (myEnumerator.MoveNext())

Console.WriteLine("{0} ", myEnumerator.Current);

Console.WriteLine();

}

staticvoid Main(string[] args)

{

Stack myStack = newStack(); // khởi tạo 1 thể hiện của stack

for (int i = 0; i < 8; i++) // đẩy 8 giá trị nguyên vào stack

myStack.Push(i * 9);

Console.WriteLine("Cac tri trong myStack:\t");

InGiaTri(myStack); //in ra các giá trị trong stack

//đẩy 1 phần tử ra khỏi stack

Console.WriteLine("\nDa day ra\t{0}", myStack.Pop());

//cho hiển thị nội dung của myStack sau khi đẩy 1 phần tử

Console.WriteLine("Cac gia tri trong myStack:\t");

InGiaTri(myStack);

//đẩy tiếp một phần tử nữa ra khỏi stack

Console.WriteLine("\nDa day ra\t{0}", myStack.Pop());

Trang 3

//cho hiển thị nội dung của myStack sau khi đẩy 1 phần tử

Console.WriteLine("Cac gia tri trong myStack:\t");

InGiaTri(myStack);

//cho mình xem phần tử đầu tiên, lưu ý là mình không muốn đẩy nó khỏi stack

Console.WriteLine("Peek:\t{0}", myStack.Peek());

//cho hiển thị nội dung của myStack sau khi xem phần tử

Console.WriteLine("Cac gia tri trong myStack:\t");

InGiaTri(myStack);

//khai báo 1 mảng chứa 12 phần tử

Array myArray = Array.CreateInstance(typeof(int), 12);

//gán giá trị cho mảng

for (int i = 0; i < myArray.Length; i++)

myArray.SetValue(100 * i, i);

//cho tui xem các giá trị trong mảng

Console.WriteLine("Mang cua toi:");

InGiaTri(myArray);

//chép nội dung của myStack lên myArray

//đi từ chỉ số 6

myStack.CopyTo(myArray, 6);

//cho tui xem giá trị của mảng lúc này

Console.WriteLine("Mang sau khi duoc sao chep tu stack:");

InGiaTri(myArray);

Console.ReadLine();

}

}

}

Ngày đăng: 12/07/2014, 19:20

w