30/09/2018, 21:35

Xin trợ giúp về bài tập danh sách liên kết

Định nghĩa danh sách liên kết quản lý sách (biết mỗi sách gồm các thông tin: tựa sách, nhà xuất bản, tên tác giả chính, năm xuất bản, số lượng xuất bản).
Viết chương trình hoàn chỉnh, có xuất ra menu cho phép gọi thực hiện những thao tác sau:

  1. Nhập vào danh sách sách.
  2. Xuất danh sách sách.
  3. Tìm thông tin sách theo tên tác giả chính.
  4. Tìm thông tin những sách theo nhà xuất bản (xuất thông tin những sách do nhà xuất bản đó xuất bản).
  5. Tìm những sách có số lượng nhất bản nhiều nhất.
  6. Tìm những tác giả có số lượng sách nhiều nhất
  7. Sắp xếp danh sách giảm dần theo số lượng xuất bản, nếu số lượng bằng nhau thì giảm dần theo năm xuất bản

Câu 5 và câu 6 mình chưa biết làm, mọi người chỉ giúp.

Code câu 5 của mình chỉ tìm ra được một người duy nhất:

// Tìm ra số lượng xuất bản nhiều nhất
long findMax_SoLuongXB(List l)
{
	long lMax = 0;

	// Duyệt từ đầu danh sách đến cuối danh sách
	for(BookNode * p = l.pHead;  p != NULL; p = p->pNext)
	{
		if(lMax < p->Info.lSoLuongXB)	// p giữ số lượng xuất bản nhiều hơn
		{
			lMax = p->Info.lSoLuongXB;	// Cập nhập lại lMax mới
		}
	}

	return lMax;
}

// Xuất thông tin sách có số lượng xuất bản nhiều nhất
void showBook_SoLuongXBMax(List l, int & iSoLuongXuat)
{
	printf("Danh sach thong tin nhung sach co so luong xuat ban nhieu nhat");

	long lMax = findMax_SoLuongXB(l);
	int i = 1;

	// Duyệt từ đầu danh sách đến cuối danh sách
	for(BookNode * p = l.pHead;  p != NULL; p = p->pNext)
	{
		if(p->Info.lSoLuongXB == lMax)
		{
			printf("


");
			printf("Thong tin sach thu %d:

", i);

			showInfo(p);	// Xuất ra thông tin mỗi sách

			i++;

			// iSoLuongXuat là top số lượng sách sẽ xuất ra
			iSoLuongXuat --;

			if(iSoLuongXuat == 0)
			{
				break;
			}
		}
	}
}
Bài liên quan
0