PDA

View Full Version : سوال: کد صف و پشته



mehran5
سه شنبه 12 آذر 1387, 00:53 صبح
سلام
ببخشید کدی میخوام که یک متغیر رو بعنوان صف معرفی کنه و عددی داخل صف بذاره و برداره .برای پشته هم همین طور .ممنون

MohsenPS
سه شنبه 12 آذر 1387, 01:17 صبح
سلام،

Imports System.Collections

Public Class Form1

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim S As New Stack

S.Push(1)
S.Push(2)
MsgBox(S.Pop)
MsgBox(S.Pop)


Dim Q As New Queue
Q.Enqueue(1)
Q.Enqueue(2)
MsgBox(Q.Dequeue)
MsgBox(Q.Dequeue)
End Sub
End Class

mostafaaa
سه شنبه 12 آذر 1387, 20:07 عصر
سلام دوست من
البته اگه دوست داشتی از الگوریتم پشته هم سر در بیاری به این کد یه نگاهی بندازی بد نیست. البته فرصت نکردم براش کامنت بزارم ولی اگه سوالی داشتی بگو تا برات توضیح بدم.

Public Class MyStack
Private Value As Object
Private Top As MyStack = Nothing
Private Pri As MyStack = Nothing
Private _Count As Integer = 0
Public Sub Push(ByVal Value As Object)
If Top Is Nothing Then
Top = New MyStack
Top.Value = Value
Else
Top.Top = New MyStack
Top.Top.Pri = Top
Top = Top.Top
Top.Value = Value
End If
_Count += 1
End Sub
Public Function Peek() As Object
Return Top.Value
End Function
Public Function Pop() As Object
Dim Temp As Object = Top.Value
Top = Top.Pri
_Count -= 1
Return Temp
End Function
Public ReadOnly Property Count() As Integer
Get
Return _Count
End Get
End Property
End Class

mostafaaa
سه شنبه 12 آذر 1387, 20:28 عصر
اینم از صف
البته هر دوشون کمی اشکال دارن ولی Main idea شون درسته.

Public Class MyQueue
Private Value As Object
Private BEG As MyQueue = Nothing
Private Pointer As MyQueue = Nothing
Private _Count As Integer = 0
Public Sub Enqueue(ByVal Value As Object)
If BEG Is Nothing Then
BEG = New MyQueue
BEG.Value = Value
Pointer = BEG
Else
Pointer.BEG = New MyQueue
Pointer = Pointer.BEG
Pointer.Value = Value
End If
_Count += 1
End Sub
Public Function Dequeue() As Object
Dim Temp As Object = BEG.Value
BEG = BEG.BEG
_Count -= 1
Return Temp
End Function
Public Function Peek() As Object
Return BEG.Value
End Function
Public ReadOnly Property Count() As Integer
Get
Return _Count
End Get
End Property
End Class

mehran5
سه شنبه 12 آذر 1387, 23:40 عصر
کدو م صفت از s تعداد عناصرs رو نشون میده؟
ضمنا اگه بخوایم با یک حلقه فور عناصر صف رو مقدار دهی کنیم چطور میشه؟


For i = 1 To n
s.Enqueue(i)
Next

اینو من با n=5 نوشتم ولی اشکال میگیره؟

اوبالیت به بو
چهارشنبه 13 آذر 1387, 03:31 صبح
مقدار دهي:


For x = 1 To n
Q.Enqueue(InputBox("Enter Value", "Queue Value's"))
Next x

نمايش:


Dim counter As Byte = Q.Count()
For i = 1 To counter
MsgBox(Q.Dequeue())
Next

mehran5
چهارشنبه 13 آذر 1387, 07:46 صبح
ممنون .قاعدتا باید زمانی که هر بار از صف عنصری کم میشه تعداد count اون هم باید کم بشه ایتطوری نیست؟

mostafaaa
چهارشنبه 13 آذر 1387, 09:11 صبح
قاعدتا باید زمانی که هر بار از صف عنصری کم میشه تعداد count اون هم باید کم بشه ایتطوری نیست؟
همینطور هم هست

Public Function Dequeue() As Object
Dim Temp As Object = BEG.Value
BEG = BEG.BEG
_Count -= 1
Return Temp
End Function

mehran5
جمعه 15 آذر 1387, 08:57 صبح
با تشکر ازآقا مصطفی و محسن آقا .ولی باید بگم هرچی کدکمتر بشه بهتره .درهر صورت نمی دونم چرا اقا مصطفی از روش ایجاد کلاس استفاده کرده فکر کنم کلاسی برای آموزش بهتر باشه ولی استفاده ا زکلاسها و متغیرهای آماده برای کد بهتره.ضمنا من روش دوم دوم رو نوشتم ولی یه ایرادی داره .ممون میشم کمکم کنید.http://barnamenevis.org/forum/desktop\untitled

MohsenPS
جمعه 15 آذر 1387, 10:41 صبح
دوباره سلام،
برای تعریف Q به عنوان یک صف، باید از کلمه کلیدی New استفاده می کردید :


Dim Q As New Queue

mostafaaa
جمعه 15 آذر 1387, 17:45 عصر
با تشکر ازآقا مصطفی و محسن آقا .ولی باید بگم هرچی کدکمتر بشه بهتره .درهر صورت نمی دونم چرا اقا مصطفی از روش ایجاد کلاس استفاده کرده فکر کنم کلاسی برای آموزش بهتر باشه ولی استفاده ا زکلاسها و متغیرهای آماده برای کد بهتره.ضمنا من روش دوم دوم رو نوشتم ولی یه ایرادی داره .ممون میشم کمکم کنید.http://barnamenevis.org/forum/desktop%5Cuntitled
البته دوست من
کاملا واضحه که استفاده از کلاسها و توابع آماده بهتر از اینه که برای هر کاری بخواهیم دوباره خودمون یه کلاس جدید بنویسیم. علت اینکه من این کلاسها رو نوشتم این بود که شما با نحوه کارکرد این کلاسها آشنا بشید نه اینکه از اینها استفاده کنید.
موفق باشید

sarakh
شنبه 05 تیر 1389, 18:07 عصر
سلام چه طور می تونم خالی یا پر بودن پشته رو چک کنم؟؟؟؟؟؟؟؟؟:متفکر:

sarakh
شنبه 05 تیر 1389, 20:53 عصر
سلام چه طور می تونم خالی یا پر بودن پشته رو چک کنم؟؟؟؟؟؟؟؟؟:متفکر:

جواب اینه که اگر خاصیت count برای پشته صفر باشه یعنی پشته خالی شده.:لبخندساده:

sajjad_india
شنبه 05 تیر 1389, 23:27 عصر
ببخشید تو وسط صحبتها و نظراتتون اومدم

میشه بپرسم صف و پشته اصلا چیه ؟

مرسی از همه شما دوستان عزیز