Làm thế nào để cho phép nhập ID không trùng

LÀM SAO ĐỂ NHẬP MÀ KHI NHẬP ID VÀO KHÔNG TRÙNG VỚI CÁI KHÁC NẾU TRÙNG BẮT LẶP LẠI TRONG DANH SÁCH LIÊN KẾT ĐƠN

#include <iostream>
#include <string.h>
#include <conio.h>
using namespace std;

class nhanvien
{
	private:
		int id;
	public:
		nhanvien *next;
		void nhap()
		{
			cin>>id;
		};
		int getid()
		{
			return id;
		};
		friend class danhba;
};

class danhba
{
	protected:
		nhanvien *f;
	public:
		danhba()
		{
			f = NULL;
		}
		void them()
		{
			nhanvien *p = new nhanvien;
			p->nhap();
			p->next = NULL;
			if(f==NULL)
			{
				f = p;
			}
			else
			{
				nhanvien *q = f;
				while(q->next != NULL)
				{
					q = q->next;
				}
				q->next = p;
			}
		};
		bool kiemtratrungnhau()
		{
			nhanvien *k;
			for(k=f;k!=NULL;k=k->next)
			{
				nhanvien *p;
				for(p=k->next;p!=k;p=p->next)
				{
					if(k->getid() == p->getid())
					{
						k->next = k;
						return 0;
					}
				}
			}
			return 1;
		};
};


int main()
{
	danhba db;
	
	int n;
	cin>>n;
	for(int i = 0;i<n;i++)
	{
		do
		{
			db.them();
			if(db.kiemtratrungnhau()==true)
			{
				cout<<"Trung ID "<<endl;
			}

		}while(db.kiemtratrungnhau()==true);
	}
	
}

ID không trùng thì DS sẽ phải kiểm soát chứ ko phải class thành phần :smiley: tức là ko đưa vào container những ID trùng :smiley:

2 Likes

nhập trong danh sach liên kết đơn ví dụ như mình nhập cái đầu rồi nhập cái thứ hai trùng là bắt phải nhật lại là code sao nhĩ

Kiểm tra ngay trong phương thức them() của lớp danhba và yêu cầu nhập lại ngay.

2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?