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

Đề tài: Danh sách liên kết đơn dùng để quản lí sinh viên

  1. #1
    Ngày gia nhập
    04 2018
    Bài viết
    2

    Mặc định Danh sách liên kết đơn dùng để quản lí sinh viên

    Đây là một phần của bài dslk đơn mình làm để quản lí sinh viên. Lúc đầu khi nhập vào thì nó cứ chuyển thông tin tin sinh viên vừa nhập lên trên đầu, (tức là thứ tự thông tin sinh viên 1,2,3 khi xuất ra sẽ thành 3,2,1). Và sau khi mình ngồi mò mẫm một lúc thì bây giờ nó không xuất ra màn hình được gì luôn. Mong mọi người có thể sửa lại code giúp mình hoặc gợi ý cho mình cũng được.
    Code:
    #include <conio.h>
    #include <stdio.h>
    #include <stdlib.h>
    
    typedef struct SinhVien
    {
    	char HoTen [40];
    	char MSSV[10];
    	float DTB;
    }SV;
    
    typedef struct node
    {
    	SV info;
    	struct node* next;
    }Node;
    
    typedef Node* NODEPTR;
    
    void Init(NODEPTR &phead)
    {
    	phead=NULL;
    }
    
    int IsEmpty(NODEPTR phead)
    {
    	return (phead ==NULL);
    }
    
    NODEPTR CreateNode(SV x)
    {
    	NODEPTR p = new Node;
    	p->info = x;
    	p->next = NULL;
    	return p;
    }
    
    void InsertFirst(NODEPTR &phead , SV x)
    {
    	NODEPTR p = CreateNode(x); 
    	if(phead==NULL)			
    		phead = p;
    	else
    	{
    	p->next = phead;
    	phead = p;
    	}	
    }
    
    void ShowSV(NODEPTR phead)
    {
    	SV x = phead->info;
    	printf("\tMSSV\t\tHoTen\t\tDiemTB\n");
    	printf("\t%s\t\t%s\t\t%.2f\n",x.MSSV,x.HoTen,x.DTB);
    }
    
    void ShowList(NODEPTR phead)
    {
    	NODEPTR p = phead;
    	if(p == NULL)
    	{
    		printf("DS chua co phan tu nao...\n");
    		return;
    	}
    	while(p!=NULL)
    	{
    		ShowSV(p);
    		p=p->next;
    	}
    }
    
    void NhapSLSinhVien(SV x)
    {
    	int n;
    	NODEPTR phead;
    	printf("Nhap so luong sinh vien:  ");
    	scanf("%d",&n);
    	//for(int i = n-1,x; i >= 0; i--)
    	for(int i = 0; i<n; i++)
    	{
    		printf("Nhap sinh vien thu %d\n ",i+1);
    		printf("nhap ma sinh vien:  ");
    		fflush(stdin);
    		gets(x.MSSV);
    		printf("nhap ten sinh vien:  ");
    		fflush(stdin);
    		gets(x.HoTen);
    		printf("nhap diem trung binh:  ");
    		float t;
    		scanf("%f",&t);
    		x.DTB = t;
    	}
    }
    
    void main()
    {
    	SV x;
    	int n;
    	NODEPTR phead = NULL;
    	Init(phead);
    	NhapNPhanTu(x);
    	InsertFirst(phead,x);
    	ShowList(phead);
    	getch();
    }

  2. #2
    Ngày gia nhập
    08 2017
    Bài viết
    1,487

    Nhập để làm gì, chứa vào đâu khi n > 1

    C Code:
    1. void NhapSLSinhVien(SV x)
    2. {
    3.     int n;
    4.     NODEPTR phead;
    5.     printf("Nhap so luong sinh vien:  ");
    6.     scanf("%d",&n);
    7.     //for(int i = n-1,x; i >= 0; i--)
    8.     for(int i = 0; i<n; i++)
    9.     {
    10.         printf("Nhap sinh vien thu %d\n ",i+1);
    11.         printf("nhap ma sinh vien:  ");
    12.         fflush(stdin);
    13.         gets(x.MSSV);
    14.         printf("nhap ten sinh vien:  ");
    15.         fflush(stdin);
    16.         gets(x.HoTen);
    17.         printf("nhap diem trung binh:  ");
    18.         float t;
    19.         scanf("%f",&t);
    20.         x.DTB = t;
    21.     }
    22. }

  3. #3
    Ngày gia nhập
    04 2018
    Bài viết
    2

    Mình đại khái cũng đã hiểu là do hàm mình viết chỉ có thể chứa tt của 1 sv, nhưng giờ mình cũng chả biết viết code sao để chứa thông tin của nhiều đứa bây giờ. Thật sự là mình dốt đặc phần danh sách liên kết này. Mình suy nghĩ cả buổi cũng chỉ để ý được mỗi chỗ
    Code:
    void NhapSLSinhVien (SV x)
    bị thiếu dấu &. Mong bạn có thể code ra giúp mình.

  4. #4
    Ngày gia nhập
    08 2017
    Bài viết
    1,487

    Trích dẫn Nguyên bản được gửi bởi Metallicana Xem bài viết
    Mình đại khái cũng đã hiểu là do hàm mình viết chỉ có thể chứa tt của 1 sv, ...
    Không những mình dốt đặc phần danh sách liên kết mà còn dốt lỏng về ngôn ngữ:
    C Code:
    1. typedef struct SinhVien
    2. {
    3.     char HoTen [40];
    4.     char MSSV[10];
    5.     float DTB;
    6. }SV;
    7. ...
    làm để quản lí sinh viên tây đui, không có dấu tiếng Việt

Tags của đề tài này

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