Lập trình C nâng cao bài 22: Hướng dẫn in danh sách liên kết đơn theo chiều đảo ngược

629

Chào mừng các bạn đã đến với học viện công nghệ Vietpro

Đây là loạt video hướng dẫn lập trình C từ cơ bản đến nâng cao của Vietpro.

Ở bài học trước, các bạn đã được hướng dẫn tạo danh sách liên kết đơn và in ra màn hình trong lập trình C.

Trong bài học lần này, các bạn có thể hiểu về cách in danh sách liên kết đơn theo chiều đảo ngược trong lập trình C. Chúng ta cùng tìm hiểu nhé.

[VIDEO TUT]

Bấm Subscribe Nhận video học mới nhất :

Chú ý: Các bạn lựa chọn video ở chế độ 720HD để xem được chất lượng hình ảnh và âm thanh tốt nhất nhé.

In đảo ngược

Như ở bài trước chúng ta đã được học cách in ra dãy số nguyên dùng danh sách liên kết đơn. Về khai báo ở bài này sẽ tương tự như bài trước, nhưng hàm in sẽ thay đổi. Ta sử dụng hàm đệ quy ( hàm này có thể gọi được chính nó ) để in ra danh sách đảo ngược:

void inDanhSachDaoNguoc(SoNguyen *&pdau){
	SoNguyen *p = pdau;
	if(pdau == NULL) return;
	inDanhSachDaoNguoc(p->tiep);
	printf("%d ",p->dulieu);
}

Chúng ta thử cả bài toán:

#include<stdio.h>
#include<stdlib.h>
struct SoNguyen{
	int dulieu;
	struct SoNguyen *tiep;
};
void taoDanhSach(SoNguyen *&pdau){
	int repeat;
	SoNguyen *p;
	do{ // de cho nguoi dung nhap vao so luong tuy y
		if(pdau == NULL){ //Neu p dau rong
			pdau = (SoNguyen*)malloc(sizeof(SoNguyen)); //cap phat bo nho cho p
			p = pdau;
		}else{  //neu nhu no co gia tri roi thi p se tro den tiep 
				// va cap phat bo nho cho no
			p = pdau;
			while (p->tiep !=NULL) p = p->tiep;
			p->tiep = (SoNguyen*)malloc(sizeof(SoNguyen));
			p = p->tiep;
		}
		printf("Nhap du lieu cho danh sach : \n");
		scanf("%d",&(p->dulieu));
		p->tiep = NULL;
		printf("Ban co muon tiep tuc hay khong ?");
		scanf("%d",&repeat);
	}while(repeat  != 0);
}
void inDanhSachDaoNguoc(SoNguyen *&pdau){
	SoNguyen *p = pdau;
	if(pdau == NULL) return;
	inDanhSachDaoNguoc(p->tiep);
	printf("%d ",p->dulieu);
}
int main(){
	SoNguyen *pdau = NULL;	
	taoDanhSach(pdau);
	inDanhSachDaoNguoc(pdau);
	return 0;
}

Kết quả:

Bài học đến đây là kết thúc. Trong bài học tiếp theo, các bạn sẽ được hướng dẫn tìm kiếm một phần tử trong danh sách liên kết đơn.

Chúc các bạn học tốt

Tác giả: Danh Sơn Vietpro

No votes yet.
Please wait...

BÌNH LUẬN