01/10/2018, 12:10

Ý nghĩa của hàm pop trong stack

#include "stdio.h"
#include "conio.h"

struct node
{
	int info;
	node *next;
};

struct list
{
	node *dau;
};

void list_null(list &l)
{
	l.dau=NULL;
}

node* tao(int a)
{
	node *p=new node;
	if(p==NULL)return NULL;
	p->info=a;
	p->next=NULL;
	return p;
}

void add_dau(list &l,node *p)
{
	if(l.dau==NULL)
		l.dau=p;
	else
	{
		p->next=l.dau;
		l.dau=p;
	}
}

void muoi_hai(list &l,int a)
{
	while(a>0)
	{
		node *p=tao(a%2);
		add_dau(l,p);
		a=a/2;
	}
}

void lay_xoa_het(list &l)
{
	while(l.dau!=NULL)
	{
		node *p=l.dau;
		printf("%d",l.dau->info);
		l.dau=l.dau->next;
		delete p;
	}
}

void pop(list &l,int &a)
{
	node *p=l.dau;
	l.dau=l.dau->next;
	a=p->info;
	delete p;
}




void main()
{
	list l;
	list_null(l);

	int a;
	printf("nhap so muon doi 10 > 2 ");
	scanf("%d",&a);
	muoi_hai(l,a);

	lay_xoa(l);

	getch();
}

hàm pop như mình hiểu là lấy và xóa nhưng chỉ lấy đc 1 thông tin ra ngoài nhưng ở bài toán đổi cơ số thì chúng ta cần nguyên 1 list vậy khi nào hàm pop hữu dụng ? đối với bài toán nào thì cần đến hàm pop ?

Quang Minh viết 14:21 ngày 01/10/2018

Hàm pop() trong stack là xóa phần tử ở đầu stack (stack chỉ có 1 đầu).
Có CẢ ĐỐNG vấn đề phải dùng đến stack để giải quyết, ví dụ như quản lý bộ nhớ của chương trình. những biến toàn cục sẽ được push vào stack trước, rồi các biến trong hàm, trong class v…v… và các biến đó sẽ được hủy theo thứ tự trong stack khi chương trình chạy hoặc kết thúc, biến trong hàm sẽ được hủy trước rồi cuối cùng là biến toàn cục…
Quay lại bài toán đổi cơ số, như trên tức là bạn đang tự cài đặt stack, stack hay queue hay vector về cơ bản đó là danh sách liên kết đơn, khác nhau cách thức truy cập phần tử. Bạn dùng theo cách nào bạn thấy hợp lý nhất thì bạn dùng thôi =)) Do it yourself!

Nguyễn Phú Thành viết 14:23 ngày 01/10/2018

thực ra mình viết hàm pop mà mình lại ko sài nên mình thấy lạ nên chẳng biết khi nào cần đến nó chẳng hạn như stack có 1 0 1 1 1 >> lấy 1 0 >> stack là 1 1 1 rồi add thêm 0 và 2 >> stack 2 0 1 1 1 mình ko biết có bài toàn nào pop đến khi nào thì dừng rồi add thêm vào stack.

rogp10 viết 14:24 ngày 01/10/2018

Bài tính biểu thức

Trần Hoàn viết 14:22 ngày 01/10/2018

Stack là một cấu trúc lưu trữ dữ liệu, thế thôi. Stack rất đơn giản, chỉ có push, pop, peek, không phức tạp như mảng nên sẽ dùng ở những chỗ chỉ cần chúng nó.

Bài liên quan
0