When we control the event,we control your lives
 
IndexTrợ giúpTìm kiếmThành viênNhómĐăng kýĐăng Nhập
Tìm kiếm
 
 

Display results as :
 
Rechercher Advanced Search
Latest topics
» Tô màu theo vùng quét
Tue Aug 13, 2013 4:18 pm by minhlap

» authentischen Hermes Lindy Taschen
Wed Jan 23, 2013 11:15 am by cangliang

» Hermes Bag
Wed Jan 23, 2013 11:14 am by cangliang

» Hermes Evelyn pm
Wed Jan 23, 2013 11:13 am by cangliang

» Hermes Kelly bag billig
Mon Jan 21, 2013 8:57 am by cangliang

» Hermes Constance Bag
Mon Jan 21, 2013 8:56 am by cangliang

» Discout Hermes Belt
Mon Jan 21, 2013 8:55 am by cangliang

» Christian Louboutin Love Flats
Tue Jan 15, 2013 12:25 pm by cangliang

» Christian Louboutin Love Flats
Tue Jan 15, 2013 12:25 pm by cangliang

Navigation
 Portal
 Diễn Đàn
 Thành viên
 Lý lịch
 Trợ giúp
 Tìm kiếm
December 2016
MonTueWedThuFriSatSun
   1234
567891011
12131415161718
19202122232425
262728293031 
CalendarCalendar
Diễn Đàn
Affiliates
free forum


Share | 
 

 Bài Stack và Queue bằng OOP

Xem chủ đề cũ hơn Xem chủ đề mới hơn Go down 
Tác giảThông điệp
minhlap
Admin - Quản trị viên
Admin - Quản trị viên


Tổng số bài gửi : 129
Points : 374
Reputation : 5
Join date : 22/07/2009
Age : 27
Đến từ : TP Hồ Chí Minh

Bài gửiTiêu đề: Bài Stack và Queue bằng OOP   Sun Aug 02, 2009 6:05 pm

File LIFO.cpp
Code:

http://LIFO.cpp
//Minh Lap
#include"iomanip.h"
#include"iostream.h"
#include"stdlib.h"
typedef int elem;
#define M 100
class Stack
{
   int kichthuoc;
   int top;
   elem *data;
public:
   Stack(int);
   ~Stack();
   int StackRong();
   int StackDay();
   void Push(elem);
   elem Pop();
   void Nhap(int &);
   void DuyetStack(int);
};
Stack::Stack(int kichthuoc)
{
   top=-1;
   this->kichthuoc=kichthuoc;
   data=new elem[this->kichthuoc];
}
Stack::~Stack()
{
   delete []data;
}
int Stack::StackRong()
{
   return top==-1;
}
int Stack::StackDay()
{
   return top==(this->kichthuoc)-1;
}
void Stack::Push(elem data)
{
   if(StackDay())
   {
      cout<<"Stack day";
      exit(0);
   }
   else
   {
      top++;
      this->data[top]=data;
   }
   
}
elem Stack::Pop()
{
   elem x;
   if(StackRong())
   {
      cout<<"Stack rong";
      x=-1;
      exit(0);
   }
   else
   {
      x=this->data[top--];
   }   
   return x;   
}
void Stack::DuyetStack(int k)
{
   int i;
   for(i=0;i<k;i++)
      cout<<setw(5)<<this->Pop();
}
void Stack::Nhap(int &n)
{
   do
   {
   cout<<"Nhap so phan tu :";
   cin>>n;
   }while(n<0);
   elem x;
   for(int i=0;i<n;i++)
   {
      cout<<"Nhap x["<<i<<"] :";
      cin>>x;
      this->Push(x);
   }   
}
void main()
{
   int n;
   Stack a(100);
   a.Nhap(n);
   a.DuyetStack(n);
}

File Queue.cpp
Code:

#include"iomanip.h"
#include"iostream.h"
#include"stdlib.h"
typedef int elem;
class Queue
{
   int kichthuoc;
   int front,rear;
   elem *data;
public:
   Queue(int);
   ~Queue();
   int QueueRong();
   int QueueDay();
   void AddQueue(elem);
   elem RemoveQueue();
   void Nhap(int &);
   void DuyetQueue(int);
};
Queue::Queue(int kichthuoc)
{
   this->front=this->rear=0;
   this->kichthuoc=kichthuoc;
   data=new elem[this->kichthuoc];
}
Queue::~Queue()
{
   delete []data;
}
int Queue::QueueRong()
{
   return front==rear;
}
int Queue::QueueDay()
{
   int nr=(this->rear+1)%(this->kichthuoc);
   if(nr==this->front)
      return 1;
   return 0;   
}
void Queue::AddQueue(elem data)
{   
   int nr=(this->rear+1)%(this->kichthuoc);
   if(QueueDay())
   {
      cout<<"Queue day";
      exit(0);
   }
   else
   {   
      this->data[this->rear]=data;
      this->rear=nr;
   }   
}
elem Queue::RemoveQueue()
{
   elem x;
   if(QueueRong())
   {
      cout<<"Queue rong";
      x=-1;
      exit(0);
   }
   else
   {
      x=this->data[this->front];
      this->front=(this->front+1)%(this->kichthuoc);
   }   
   return x;   
}
void Queue::DuyetQueue(int k)
{
   int i;
   for(i=0;i<k;i++)
      cout<<setw(5)<<this->RemoveQueue();
}
void Queue::Nhap(int &n)
{
   do
   {
   cout<<"Nhap so phan tu :";
   cin>>n;
   }while(n<0);
   elem x;
   for(int i=0;i<n;i++)
   {
      cout<<"Nhap x["<<i<<"] :";
      cin>>x;
      this->AddQueue(x);
   }   
}
void main()
{
   int n;
   Queue a(100);
   a.Nhap(n);
   a.DuyetQueue(n);
}

_________________
minhlapit
Về Đầu Trang Go down
Xem lý lịch thành viên http://minhlap.allgoo.us
symphonyenigmatic
Thành viên bậc 3
Thành viên bậc 3


Tổng số bài gửi : 61
Points : 104
Reputation : 6
Join date : 26/07/2009
Age : 28
Đến từ : http:://thienthancntt.tk

Bài gửiTiêu đề: Hỏi hàm StackDay()   Tue Aug 04, 2009 2:15 pm

Stack của bạn khi đầy thì return Top = (this->KichThuoc) - 1;
Điều đó là sao vậy? Thiệc sự chưa hỉu lắm, theo giáo trình Thầy Long cho hồi năm ngoái hình như không có hàm Stack Đầy, chỉ có Rỗng thôi. Bạn giải thik kĩ hơn dc không?
Về Đầu Trang Go down
Xem lý lịch thành viên http://http:://thienthancntt.tk
anbinhtrong
Thành viên bậc 1
Thành viên bậc 1


Tổng số bài gửi : 13
Points : 17
Reputation : 1
Join date : 29/08/2009
Age : 27
Đến từ : BT

Bài gửiTiêu đề: Stack đầy   Wed Sep 16, 2009 11:01 am

Thật ra mình nghĩ không nên làm hàm stack đầy vì chỉ đơn giản bạn kt nó có = top hay không?
Trích dẫn :
return Top == (this->KichThuoc) - 1;
vì mảng C++ cũng bắt đầu từ 0 mà.
Mình nên nghĩ bạn thử dùng template để viết xem sao.
Về Đầu Trang Go down
Xem lý lịch thành viên http://ngoctho1001.blogspot.com/
minhlap
Admin - Quản trị viên
Admin - Quản trị viên


Tổng số bài gửi : 129
Points : 374
Reputation : 5
Join date : 22/07/2009
Age : 27
Đến từ : TP Hồ Chí Minh

Bài gửiTiêu đề: Re: Bài Stack và Queue bằng OOP   Thu Sep 17, 2009 11:15 am

tôi viêt như vậy là có lúc dùng đến

_________________
minhlapit
Về Đầu Trang Go down
Xem lý lịch thành viên http://minhlap.allgoo.us
Sponsored content




Bài gửiTiêu đề: Re: Bài Stack và Queue bằng OOP   Today at 1:18 am

Về Đầu Trang Go down
 
Bài Stack và Queue bằng OOP
Xem chủ đề cũ hơn Xem chủ đề mới hơn Về Đầu Trang 
Trang 1 trong tổng số 1 trang

Permissions in this forum:Bạn không có quyền trả lời bài viết
minhlap.allgoo.us :: Lập trình :: Lập Trình Hướng Đối Tượng,Đồ Họa OpenGL C, C++-
Chuyển đến