30/09/2018, 18:49
Sắp Xếp trong danh sách liên kết đơn
Tình hình e có làm 1 danh sách liên kết đơn bao gồm họ và tên sinh viên,mã số.E muốn sắp xếp theo mã số nhưng khi sắp xếp chỉ có mã số sắp xếp theo thứ tự còn thông tin thì nó không thay đổi(Cái này e cũng đoán ra vì e chỉ cho con trỏ trỏ đến mã số)Ai có ý tưởng gì để nó lấy luôn cả họ và tên đi theo không?Tiện e cũng hỏi luôn ý tưởng sắp xếp theo họ và tên .Gà mới mong mn giúp đỡ
Bài liên quan
Không biết bác đã học đến struct chưa, nếu học rồi thì dùng struct rất là đơn giản
e làm dslk bằng struct mà nhưng khác là thêm 1 con trỏ liên kết *next
Tức là dùng danh sách liên kết hả?
Mà bác đã dùng struct tức là mỗi sinh viên được bao gói trong 1 struct, vậy thì làm gì có chuyện thay đổi mã số thông tin sv không thay đổi theo, nó luôn đi với nhau mà
void HoanVi(int &a, int &b) { int c = a; a = b; b = c; } void SapXep(List &l) { NhanVien *i, *j; for (i = l.dau;i != l.cuoi;i = i->next) { for (j = i->next;j != NULL;j = j->next) { if (i->ms>j->ms) { HoanVi(i->ms, j->ms); } } } HienThi(l); }
hàm sắp xếp của mình ntn.Và nó lấy mã số người này gán cho người kia
Mình cũng hiểu sơ sơ về code của bạn rồi. Điểm chốt mà bạn sai là hoán vị ở đây là phải hoán vị cả cái struct chứ ko phải hoán vị mỗi cái ‘ms’. Bạn tráo đổi 2 sinh viên cho nhau chứ có phải tráo đổi ms của 2 sinh viên đâu ( mã số của thằng A cũng như Chứng minh thư của nó, ai lại đi cho thằng bạn được).
Còn cách tráo đổi 2 sinh viên cho nhau thì bạn dùng hàm HoanVi (NhanVien *a, NhanVien *b);
để mình thử xem.Cám ơn bạn nhé
đã thử và nó không đổi vị trí
Bạn up code lên mình thử xem có sửa đc ko.
Bạn phải làm 1 cái hàm đổi. ví dụ struct SV của bạn có ms, tên, điểm.
Theo mình thì làm như thế này. Đổi từng giá trị hết.
khi thay đổi thứ tự thì phải thay đổi cả struct hoặc class của sv đó , chứ k phải thay đổi mỗi trường mã số, vì bạn đang làm 1 bài toán mà kiểu dữ liệu của nó k có sẵn trong c / c++ nên bạn phải dùng struct hoặc class để tạo ra 1 kiểu dl phù hợp cho bài toán, khi thay đổi chú ý bạn thay đổi thứ tự của cái gì>?
Cám ơn bác đã chia sẻ.Đã làm và thành công rực rỡ )
E xin chia sẻ thêm là trong hàm strcpy còn phả thêm 2 bước nữa là copy s2 cho s1,và copy temp cho s2
Cám ơn luôn bạn Nấm lùn IT nhé mn giúp đỡ nhiệt tình quá
Tiện topic này hỏi luôn mn có ý tưởng gì về sắp xếp danh sách theo tên sinh viên không?Xem 1 số thì có bảo dùng hàm strcmp so sánh mà e còn hơi mơ hồ
ý tưởng của e là tách riêng hotendem va ten thanh 2 chuỗi làm thì cũng ok rồi nhưng e muốn mn cho e ý kiến ví dụ là chỉ 1 chuỗi hovaten luôn mà nó biết đâu là ten để so sánh
Do mình lười nên không ghi tiếp ấy mà :v