Mang đến cho bạn hành trang là Kiến thức và Kinh nghiệm

Lựa chọn chủ đề bạn quan tâm

Cùng nhau thảo luận về các vấn đề

Hãy theo dõi chúng tôi nếu bạn thấy bổ ích

  1. Hỏi đáp IT
  2. Hỏi nhanh

Hỏi về cách chèn phần tử trong danh sách liên kết

226 Lượt xem 13 Bình luận 0 Lượt báo xấu
Chào mọi người trên diễn đàn!
Nay mới học đến phần này táy máy làm thử thì hơi bị ngờ ngợ chỗ này
Chả là bài tập thì kêu là sắp xếp 1 danh sách liên kết đơn gồm có tên,mssv và đtb của sinh viên!
Mình làm được hết cả rồi. Theo struct ấy mấy bác chứ ko phải class nha!
Nhưng khi đến khúc gay go là yêu cầu chèn thêm 1 sv với tên, mssv , dtb vào danh sách liên kết đã sắp xếp theo điểm trung bình thì hơi bị tắt ở đấy. Cái chính là sau khi chèn thì danh sách ấy vẫn là 1 danh sách đã sắp xếp theo chiều tăng dần rồi ấy??
Mọi người có cách nào giúp đả thông vụ này với ạ!!
À C++ nha mấy bác 
Câu trả lời

- Bạn đã sẵn sàng thảo luận về chủ đề này. Hãy bấm "Viết bình luận", bạn có thể lựa chọn sử dụng tài khoản Facebook hoặc Google++

- Vì sự phát triển của cộng đồng CNTT/CNPM tại Việt Nam!

Unknown user
No responses yet

Vì bạn không đưa ngôn ngữ bạn sử dụng là gì nên mình chỉ cho bạn mã giả thôi:
void add(item):
    for i = 0 -> n-1:
        if sv[i] < item && item < sv[i+1]: // bạn không đưa ra điều kiện so sánh,
                                           // tạm đặt toán tử '<' để biểu diễn
                                           // quan hệ nhỏ hơn -> nhỏ hơn xếp trước
            insert(item, i+1) // chèn item vào vị trí i+1
 
0 Lượt thích

Cái chính ở đây là phải biết được nó được sắp xếp theo dữ liệu nào ?
0 Lượt thích

Mình dùng ngôn ngữ c++ và cái danh sách liên kết thì sắp xếp theo điểm trung bình ấy
0 Lượt thích

bạn có thể duyệt 1 danh sách liên kết rồi in ra số phần tử, số dtb của từng p/tử (node) không ?
0 Lượt thích

Được á bạn? mấy đó mình làm đc hết cả rồi
0 Lượt thích

danh sách liên kết của bạn được cài đặt bằng mảng hay là con trỏ vậy
0 Lượt thích

Con trỏ bác ơi. Chỉ cần giúp mình đã thông làm sao để chèn vô là mình làm đc òi, ko cần code lắm đâu
0 Lượt thích

danh sách liên kết đơn hay kép vậy ? thường là khi chèn 1 phần tử phải chia ra 3 trường hợp, là chèn vào đầu, chèn vào cuối hay chèn vào vị trí giữa
0 Lượt thích

DS Đơn bác ơi, trường hợp này mình nói rõ mà, ko biết nên chèn vào đâu và chèn ntn ấy mới hỏi nè
Tại vì cái cần chèn thì nhập vô. Mà cái danh sách thì đã sort rồi. Có thể nó sẽ nhỏ hơn số đầu => chèn đầu
Có thể nó sẽ nhỏ hơn số cuối => chèn cuối
Hoặc có thể chèn bất kì.
0 Lượt thích

chèn vào giữa: duyệt tới node x mình cần chèn vào sau, tạo ra 1 node mới có dữ liệu cần chèn cho nó trỏ tới node mà x trỏ tới, rồi cho x trỏ tới cái node vừa tạo, danh sách liên kết đơn nhé
0 Lượt thích

nếu vậy mỗi lần chèn , thì cứ cho nó chèn cuối , rồi sắp xếp lại à @@!
0 Lượt thích

Nếu vậy thì nó đơn giản rồi ông ơi. Cái chính là chèn vào luôn vẫn ko làm mất thứ tự ấy. Ko đc sắp xếp lại lần nữa mà.
0 Lượt thích

tạo 2 hàm add đầu, với add sau là được
khi nhập phân từ mới kiêm tra điêu kiện để quyết định chèn vào đâu.
void addfirst(list &l,node *newnode)
{
	if(l.phead==NULL)
	{
		l.phead=newnode;
		l.ptail=l.phead;
	}
	else
	{
		newnode->pnext=l.phead;
		l.phead=newnode;
	}
}
void addfter(list &l,node *q,node*newnode)
{
	if(q!=NULL)
	{
		newnode->pnext=q->pnext;
		q->pnext=newnode;
		if(q==l.ptail)
			l.ptail=newnode;
		
	}
	else
	{
		addfirst(l,newnode);
	}
}
void them_sv(list &l)
{
	node*newnode;
	node*p,*truoc_p=NULL;
	p=l.phead;
	sinhvien sv;
	//sap_xep(l);
	
	printf(" \nnhap ma so :\t");
	scanf("%d",&sv.masv);
	fflush(stdin);
	printf(" nhap ho ten:\t");
	gets(sv.hoten);

	newnode=getnode(sv); 
	if(newnode->info.masv< l.phead->info.masv)
		addfirst(l,newnode);
	else
		while(p!=NULL && (p->info.masv< newnode->info.masv))
		{
			truoc_p=p;
			p=p->pnext;
		}
		addfter(l,truoc_p,newnode);
}
all truct
template<class KDL>
void hoanvi(KDL &a,KDL &b)
{
	KDL tam;
	tam=a;
	a=b;
	b=tam;
}

typedef struct sinhvien
{
	int masv;
	char hoten[35];
};
typedef struct node
{
	sinhvien info;
	node*pnext;
};
typedef struct list
{
	node *phead;
	node*ptail;
};

0 Lượt thích

Từ khóa tìm kiếm

Câu trả lời mới nhất

Tin tuyển dụng