Từ 1 tới 3 trên tổng số 3 kết quả

Đề tài: Cách tạo danh sách liên kết mới từ danh sách liên kết đã cho như thế nào?

  1. #1
    Ngày gia nhập
    03 2011
    Bài viết
    25

    Mặc định Cách tạo danh sách liên kết mới từ danh sách liên kết đã cho như thế nào?

    Mình có bài tập này về danh sách liên kết đơn. Đề là : tạo danh sách liên kết lưu dữ liệu sinh viên , sau đó tạo danh sách mới từ danh sách đã cho sao cho danh sách mới giảm dần theo mã sinh viên .
    Mình vẫn chưa biết cách làm thế nào , nếu đơn giản là sắp xếp thi có thể làm được . Mong mấy bạn giúp mình nha !

    đây là code mình đã làm phần nhập xuất

    Code:
    #include<stdio.h>
    #include<conio.h>
    #include<string.h>
    typedef struct SinhVien
    {
    	char ten[30];
    	int masv;
    	float diem;
    }sv;
    struct node
    {
    	SinhVien data;
    	struct node *next;
    };
    void insertlast(node *&phead,sv x)
    {
    	node *p=new node;
    	p->data=x;
    	p->next=NULL;
    	if(phead==NULL)
    	{
    		phead=p;
    		return;
    	}
    	node *q=phead;
    	while(q->next!=NULL)
    		q=q->next;
    	q->next=p;
    }
    void input1sv(sv &x)
    {
    	printf("\n ID    :  ");
    	scanf("%d",&x.masv);
    	printf("\n Name  :  ");
    	flushall();
    	gets(x.ten);
    	float t;
    	do{
    	printf("\n Point :   ");
    	scanf("%f",&t);
    	x.diem=t;
    	if(t<0 || t>10) printf("\n Nhap sai ! Nhap lai \n ");
    	}while(t<0 || t>10);
    }
    void output1sv(sv x)
    {
    	printf("\n ID    : %d  ",x.masv);
    	printf("\n Name  : %s  ",x.ten);
    	printf("\n Point : %6.2f",x.diem);
    }
    void inputsv(node *&phead,int n)
    {
    	sv x;
    	for(int i=0;i<n;i++)
    	{
    		printf("\n Student %d \n ",i+1);
    		input1sv(x);
    		insertlast(phead,x);
    	}
    }
    void outputsv(node *phead)
    {
    	for(node*p=phead;p!=NULL;p=p->next)
    	{
    		printf("\n");
    		output1sv(p->data);
    	}
    }
    void main()
    {
    	node*phead=NULL;
    	int chon;
    	do{
    		clrscr();
    		printf("\n 0. Ket thuc ");
    		printf("\n 1. Nhap sinh vien ");
    		printf("\n 2. Xuat sinh vien ");
    		printf("\n Moi ban chon :  ");
    		scanf("%d",&chon);
    
           switch(chon){
    			case 1:
    				int n;
    				printf("\n So luong sinh vien :   ");
    				scanf("%d",&n);
    				inputsv(phead,n);
    				break;
    			case 2:
    				outputsv(phead);
    				getch();
    				break;
                             }
    	  }while(chon!=0);
    }

  2. #2
    Ngày gia nhập
    05 2011
    Bài viết
    82

    Copy danh sách này ra 1 danh sách khác và rồi.
    sau đó tạo danh sách mới từ danh sách đã cho sao cho danh sách mới giảm dần theo mã sinh viên .
    Thì đơn giản là sắp xếp mà.

  3. #3
    Ngày gia nhập
    07 2010
    Bài viết
    288

    Code:
    int ThemThuTu( node*&phead ,sv)
    {
    	node *p=new node;
    	if(p==NULL)
    	{
    		return 0;
    	}
    	p->data=sv;
    	p->next=NULL;
    	if(phead==NULL)
    	{
    		phead=p;
    		return 1;
    	}
    	if(phead->masv<sv.masv)
    	{
    		p->next=phead;
    		phead->next=p;
    		return 1;	
    	}
    	node *q=phead;
    	while(q->next!=NULL||q->next->masv > p->masv)
    	 	q=q->next;
    	p->next=q->next;
    	q->next=p;
    	return 1;
    }
    int main()
    {
    node *list1,*list2;
    //nhập dữ liệu vào cho list1
    //..................
    
    
    node *p=list1;
    while(p!=null)
    {
    	ThemThuTu(*list2,p->data);
    	p=p->next;
    }
    }
    bạn test lại xem sao. lâu rồi không code nên có thể bị sai vài chỗ
    Em bảo: "Anh đi đi"
    Sao anh không đứng lại?
    Em bảo: "Anh đừng đợi"
    Sao anh vội về ngay?

Các đề tài tương tự

  1. Nhập và xuất danh sách liên kết lồng danh sách liên kết?
    Gửi bởi nvluong_it trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 1
    Bài viết cuối: 22-04-2011, 11:30 AM
  2. Nhập xuất danh sách bằng Danh Sách Liên Kết như thế nào?
    Gửi bởi hvcuongit trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 3
    Bài viết cuối: 10-12-2010, 10:16 AM
  3. Lập trình C Danh sách liên kết - Xử lý danh sách liên kết trong lập trình C
    Gửi bởi phucduan trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 1
    Bài viết cuối: 08-11-2010, 10:25 PM
  4. Danh sách liên kết đơn, In danh sách như thế nào?
    Gửi bởi mr_al_one trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 0
    Bài viết cuối: 31-10-2010, 11:31 PM
  5. Danh sách liên kết, code nhập danh sách sinh viên có lỗi làm sao sửa?
    Gửi bởi acmilan trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 1
    Bài viết cuối: 10-04-2009, 08:24 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn