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

Đề tài: mình làm bài danh sách liên kết đơn này bị lỗi hoài, mong các pro chỉ giúp.

  1. #1
    Ngày gia nhập
    10 2008
    Bài viết
    1

    Mặc định mình làm bài danh sách liên kết đơn này bị lỗi hoài, mong các pro chỉ giúp.

    Mình hok biết nó bị lỗi nhưng hok biết là tại sao nữa, mong các pỏ chỉ giúp

    C Code:
    1. #include <stdio.h>
    2. #include <ctype.h>
    3. #include <mem.h>
    4. #include <string.h>
    5. #include<alloc.h>
    6. #include<conio.h>
    7. #include<math.h>
    8. #include<stdlib.h>
    9. #include<dos.h>
    10. #include<iostream.h>
    11. #define TRUE 1
    12. #define FALSE 0
    13. typedef struct
    14. {
    15.     int masv;
    16.     char hoten[20];
    17. }
    18. sinhvien;
    19. typedef struct node
    20. {
    21.     sinhvien infor;
    22.     struct node *next;
    23. }
    24. *NODEPTR;
    25. void initialize(NODEPTR*plist)
    26. {
    27.     *plist=NULL;
    28. }
    29.  
    30. NODEPTR Getnode(void)
    31. {
    32.     NODEPTR p;
    33.     p=(NODEPTR) malloc(sizeof(struct node));
    34.     return(p);     
    35. }
    36. void Freenode(NODEPTR p)
    37. {
    38.     free(p);   
    39. }
    40.  
    41. int Emtynode(NODEPTR*plist)
    42. {
    43.     if(*plist=NULL)
    44.         return(TRUE);
    45.     return(FALSE); 
    46. }
    47.  
    48. NODEPTR Inserttop(NODEPTR*plist,sinhvien x)
    49. {
    50.     NODEPTR p;
    51.     p=Getnode();
    52.     p->infor=x;
    53.     if(Emtynode(plist))
    54.     {
    55.         p->next=NULL;
    56.         *plist=p;
    57.         return(p);
    58.     }
    59.     p->next=*plist;
    60.     *plist=p;
    61.     return(p); 
    62. }
    63.  
    64. int Bottomnode(NODEPTR*plist)
    65. {
    66.     int i;
    67.     NODEPTR p;
    68.     if(Emtynode(plist))
    69.     return(-1);
    70.     p=*plist;
    71.     i=0;
    72.     while(p!=NULL)
    73.     {
    74.         i++;
    75.         p=p->next;
    76.     }
    77.     return(i);
    78. }
    79.  
    80. NODEPTR Insertbottom(NODEPTR*plist,sinhvien x)
    81. {
    82.     NODEPTR p,q;
    83.     int i,n;
    84.     n=Bottomnode(plist);
    85.     if(n=-1)
    86.     {
    87.         Inserttop(plist,x);
    88.         return(*plist);
    89.     }
    90.     p=*plist;
    91.     i=0;
    92.     q=Getnode();
    93.     q->infor=x;
    94.     while(i<n-1);
    95.     {
    96.         p=p->next;
    97.         i++;       
    98.     }
    99.     p->next=q;
    100.     q->next=NULL;
    101.     delay(2000);   [COLOR="Red"]//Dòng này báo lỗinè, chạy Cfree[/COLOR]
    102.     return(q);
    103. }
    104.  
    105. NODEPTR Insertafter(NODEPTR*plist,sinhvien x,int n)
    106. {
    107.     NODEPTR p,q;
    108.     int i;
    109.     if(n<0)
    110.     {
    111.         printf(" \n Vi tri ko hop le ");
    112.         delay(2000);
    113.         return(NULL);  
    114.     }
    115.     p=*plist;
    116.     i=0;
    117.     while(p!=NULL && i<n)
    118.     {
    119.         i++;
    120.         p=p->next;
    121.     }
    122.     if(p=NULL)
    123.     {
    124.         printf(" \n Vi tri ko hop le ");
    125.         delay(2000);
    126.         return(NULL);      
    127.     }
    128.     q=Getnode();
    129.     q->infor=x;
    130.     q->next=p->next;
    131.     p->next=q;
    132.     return(q); 
    133. }
    134.  
    135.  
    136. void Deltop(NODEPTR*plist)
    137. {
    138.     NODEPTR p,q;
    139.     p=*plist;
    140.     if(Emtynode(plist))
    141.     {
    142.         printf(" \n Danh Sach Rong ");
    143.         delay(2000);
    144.         return;
    145.     }
    146.     q=p;p=p->next;
    147.     *plist=p;
    148.     printf(" \n Node bi loai bo ");
    149.     printf(" \n %-5d%-20s",q->infor.masv,q->infor.hoten);
    150.     delay(2000);
    151.     Freenode(q);   
    152. }
    153.  
    154. void Delbottom(NODEPTR*plist)
    155. {
    156.     NODEPTR p,q;
    157.     int i,n;
    158.     n=Bottomnode(plist);
    159.     if(n=-1)
    160.     {
    161.         printf(" \n Danh Sach Rong ");
    162.         delay(2000);
    163.         return;
    164.     }
    165.     if(n=1)
    166.     {
    167.         Deltop(plist);
    168.         return;    
    169.     }
    170.     p=*plist;
    171.     i=0;
    172.     while(i<n-2)
    173.     {
    174.         p=p->next;
    175.         i++;
    176.     }
    177.     q=p->next;
    178.     p->next=NULL;
    179.     printf(" \n Node dc loai bo ");
    180.     printf("\n %-5d%-20s",q->infor.masv,q->infor.hoten);   
    181.     delay(2000);
    182.     Freenode(q);
    183. }
    184.  
    185. void Delcurrent(NODEPTR*plist, int n)
    186. {
    187.     NODEPTR p,q; int i;
    188.     if(Emtynode(plist))
    189.     {
    190.         printf(" \n Danh Sach Rong ");
    191.         delay(2000);
    192.         return;
    193.     }
    194.     if(n=0)
    195.     {
    196.         Deltop(plist);
    197.         return;
    198.     }
    199.     p=*plist;
    200.     i=0;
    201.     while(p!=NULL && i<n-1)
    202.     {
    203.         i++;
    204.         p=p->next;
    205.     }
    206.     if(p->next=NULL)
    207.     {
    208.         printf(" \n Node ko hop le ");
    209.         delay(2000);
    210.         return;
    211.     }
    212.     q=p->next;
    213.     p->next=q->next;
    214.     printf("\n Node dc loai bo ");
    215.     printf("\n %-5d%-20s",q->infor.masv,q->infor.hoten);
    216.     delay(2000);
    217.     Freenode(q);
    218. }
    219.  
    220. void Travenode(NODEPTR*plist)
    221. {
    222.     NODEPTR p;
    223.     if(Emtynode(plist))
    224.     {
    225.         printf("\n Danh Sach Rong ");
    226.         delay(2000);
    227.         return;
    228.     }
    229.     p=*plist;
    230.     while(p!=NULL)
    231.     {
    232.         printf(" \n %-5d%-20s",p->infor.masv,p->infor.hoten);
    233.         p=p->next;
    234.        
    235.     }
    236.     delay(2000);
    237.    
    238. }
    239.  
    240. void Sortnode(NODEPTR*plist)
    241. {
    242.     NODEPTR q,p;
    243.     sinhvien temp;
    244.     for(p=*plist;p!=NULL;p=p->next)
    245.     {
    246.         for(q=p->next;q!=NULL;q=q->next)
    247.         {
    248.             if(p->infor.masv>q->infor.masv)
    249.             {
    250.                 temp= p->infor;
    251.                 p->infor= q->infor;
    252.                 q->infor=temp;
    253.                
    254.             }
    255.         }  
    256.     }
    257.     printf("\n Danh Sach dc sap xep");
    258.     for(p=*plist;p!=NULL;p=p->next)
    259.     {
    260.         printf(" \n %-5d%-20s",p->infor.masv,p->infor.hoten);
    261.     }
    262.     delay(2000);
    263.    
    264. }
    265.  
    266.  
    267. void Searchnode(NODEPTR*plist,int masv)
    268. {
    269.     NODEPTR p;
    270.     p=*plist;
    271.     while(p!=NULL && p->infor.masv!=masv)
    272.     p=p->next;
    273.     if(p=NULL)
    274.     printf("\n Node ko ton tai ");
    275.     else {
    276.     printf("\n Node can tim");
    277.     printf(" \n %-5d%-20s",p->infor.masv,p->infor.hoten);
    278.    
    279.     }
    280.     delay(2000);
    281.    
    282. }
    283.  
    284.  
    285. void Thuchien(void)
    286. {
    287.     NODEPTR plist; sinhvien x,y;
    288.     int vitri;
    289.     char c;
    290.     initialize(&plist);
    291.     do
    292.     {
    293.         printf("\n Thao Tac Voi Single Link List");
    294.         printf("\n 1- Them node dau danh sach");
    295.         printf("\n 2- Them node cuoi danh sach");
    296.         printf("\n 3- Them node giua danh sach");
    297.         printf("\n 4- Loai bo node dau danh sach");
    298.         printf("\n 5- Loai bo node cuoi danh sach");
    299.         printf("\n 6- Loai bo node giua danh sach");
    300.         printf("\n 7- Duyet danh sach");                           
    301.         printf("\n 8- Sap xep danh sach");
    302.         printf("\n 9- Tim kiem danh sach");
    303.         printf("\n 0- Tro ve");
    304.         c=getch();
    305.         switch(c)
    306.         {
    307.             case'1':
    308.             printf("\n Ma sinh vien : ");
    309.             scanf("%d",&x.masv);
    310.             fflush(stdin);
    311.             printf(" \n Ho va Ten : ");
    312.             gets(x.hoten);
    313.             Inserttop(&plist,x);
    314.             break;
    315.             case'2':
    316.             printf("\n Ma sinh vien : ");
    317.             scanf("%d",&x.masv);
    318.             fflush(stdin);
    319.             printf(" \n Ho va Ten : ");
    320.             gets(x.hoten);
    321.             Insertbottom(&plist,x);
    322.             break;
    323.             case '3':
    324.             printf("\n Vi tri tren: ");
    325.             scanf("%d",&vitri);
    326.             printf("\n Ma sinh vien : ");
    327.             scanf("%d",&x.masv);
    328.             fflush(stdin);
    329.             printf(" \n Ho va Ten : ");
    330.             gets(x.hoten);
    331.             Insertafter(&plist,x,vitri-1);
    332.             break;
    333.             case '4': Deltop(&plist);
    334.             break;
    335.             case '5': Delbottom(&plist);
    336.             break;
    337.             case '6':
    338.             fflush(stdin);
    339.             printf("\n Vi tri loai bo ");
    340.             scanf("%d",&vitri);
    341.             Delcurrent(&plist,vitri -1);
    342.             break;
    343.             case '7':
    344.             Travenode(&plist);
    345.             break;
    346.             case '8':
    347.             Sortnode(&plist);
    348.             break;
    349.             case '9':
    350.             fflush(stdin);
    351.             printf("\n Ma sinh vien: ");
    352.             scanf("%d",&vitri);
    353.             Searchnode(&plist,vitri);
    354.             break;
    355.            
    356.            
    357.         }
    358.     }while (c!='0');
    359. }
    360.  
    361.  
    362. void main(void)
    363. {
    364.     Thuchien();
    365. }

    Vui lòng bỏ code vào thẻ code. Đọc nội qui trước khi post !
    Đã được chỉnh sửa lần cuối bởi rox_rook : 22-10-2008 lúc 03:41 AM.

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

    Cái bài chạy trong Cfree nè.....đính kèm ở dưới.
    Attached Files Attached Files

  3. #3
    Ngày gia nhập
    10 2008
    Bài viết
    1

    Sao hok có ai sửa lỗi giúp vậy ? khổ thiệt.....mò hoài hok biết lỗi ở đâu....

  4. #4
    Ngày gia nhập
    10 2007
    Bài viết
    169

    Ở đây ai củng lười hết nên bạn hỏi vậy cũng ít người trả lời! Ít ra cũng phải cho biết là lỗi báo ra sao, lỗi logic, syntax,runtime ...!

  5. #5
    Ngày gia nhập
    03 2008
    Bài viết
    12

    bạn có thể tham khảo liên kết ở đây.viết trên 2005 nha.
    Code:
    // danhsachlienket.cpp : Defines the entry point for the console application.
    //
    
    #include "stdafx.h"
    #include "iostream"
    using namespace std;
    struct Node
    {
    	int key;
    	Node *next;
    };
    Node *head;//khai bao toan cuc
    //Khoi tao danh sach
    void init() 
    {
    	head=NULL;
    }
    //Them phan tu x vao dau danh sach
    void insertFirst(int x)
    {
    	Node *p;
    	p=new Node;
    	p->key=x;
    	p->next=head;
    	head=p;
    }
    //Them phan tu vao giua va cuoi danh sach
    void insertMiddle(int x,Node *q)
    {
    	Node *p;
    	p=new Node;
    	p->key=x;
    	p->next=q->next;
    	q->next=p;
    }
    //Them phan tu vao danh sach da co thu tu tang
    void insertorder(int x)
    {
    	Node *p,*q,*r;
    	int cont;
    	p=new Node;
    	p->key=x;
    	//Tim phan tu q truoc p va r sau p
    	r=head;
    	cont=1;
    	while(r!=NULL&&cont)
    	{
    		if(r->key<x)
    		{
    			q=r;
    			r=r->next;
    		}
    		else cont=0;
    	}
    	if(r==head)
    		head=p;
    	else q->next=p;
    	p->next=r;
    }
    //Tim phan tu trong danh sach chua co thu tu
    Node *search(int x)
    {	
    	Node *q;
    	q=head;
    	while(q!=NULL&&q->key!=x)
    		q=q->next;
    	return q;
    }
    //Loai bo phan tu q dau danh sach
    void delFirst()
    {
    	Node *q;
    	q=head;
    	head=q->next;
    	delete(q);
    }
    //Loai do phan tu giua hay cuoi danh sach
    void delMiddleEnd(Node *p)
    {
    	Node *q;
    	q=p->next;
    	p->next=q->next;
    	delete(q);
    }
    //Loai bo phan tu co noi dung la x
    void delX(int x)
    {
    	Node *q,*p;
    	int found=0;
    	q=head;
    	while(q!=NULL&&!found)
    	{
    		if(q->key!=x)
    		{
    			p=q;
    			q=p->next;
    		}
    		else 
    			found=1;//dung
    	}
    	if(found)	//tim thay
    	{
    		if(q==head)
    			head=q->next;//bo phan tu dau
    		else 
    			p->next=q->next;//bo phan tu giua hay cuoi	
    		delete(q);
    	}
    }
    //ham hien thi ra man hinh
    void display()
    {
    	Node *q;
    	q=head;
    	while(q!=NULL)
    	{
    		cout<<q->key<<" ";
    		q=q->next;
    	}
    	cout<<endl;
    }
    //tinh trung binh cong
    double TBC()
    {
    	int sum,count;//sum=cong,count=dem
    	sum=count=0;
    	Node *q=head;
    	while(q!=NULL)
    	{
    		sum +=q->key;
    		count++;
    		q=q->next;
    	}
    	if(count !=0)
    		return double(sum)/count;
    	else 
    		return 0.0;
    }
    
    int main(int argc, char* argv[])
    {	
    	int x;
    	Node *q,*p,*r;
    	init();
    	cout<<"Nhap gia tri duong (am ket thuc):";
    	cin>>x;
    
    	while(x>=0)
    	{
    		 insertFirst(x);
    		 cout<<"Nhap gia tri duong (am ket thuc):";
    		 cin>>x;	 
    	}
    	display();
    	cout<<"Trung binh cong bang: "<<TBC()<<endl;
    	cout<<"Nhap gia tri can tim x=";
    	cin>>x;
    	q=search(x);
    	if(q!=NULL)	//timthay
    	{
    		cout<<"Nhap gia tri can them :";
    		cin>>x;
    		insertMiddle(x,q);
    		display();
    	}
    	else
    		cout<<"Khong tim thay !!!"<<endl;
    	if(q!=NULL)
    	{
    		//hHoan doi hai nut
    		r=q->next;
    		if(q!=head)
    		{	
    			p=head;
    			while(p->next!=q)
    				p=p->next;
    			p->next=q->next;
    		}
    		else
    			head=q->next;
    		q->next=r->next;
    		r->next=q;
    	}
    	display();
    	q=head;
    	while(q!=NULL)
    	{
    		delFirst();
    		q=head;
    	}
    	if(head==NULL)
    		cout<<"Xoa thanh cong"<<endl;
    	else cout<<"Xoa khong thanh cong"<<endl;
    	return 0;
    }
    HỌC HỌC NỮA HỌC MÃI.
    YÊU LÀM CHI CHO ĐỜI THÊM KHỔ.
    HỌC CHI NHIỀU XÁCH RỔ ĂN XIN.

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

    Mặc định mình làm bài danh sách liên kết đơn này bị lỗi hoài, mong các pro chỉ giúp.

    Lỗi của bạn là do dùng con trỏ mà ko cấp phát bộ nhớ cho nó! Chú ý sửa lại chắc là ok!

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

  1. Lỗi nhập lại danh sách trong hàm NhapDanhSach không được ?Mong mấy pro giúp với
    Gửi bởi kimdan trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 2
    Bài viết cuối: 23-05-2011, 06:48 PM
  2. Xử lý danh sách sinh viên bằng liên kết đơn. Mong mọi người chỉ giúp
    Gửi bởi zalrol trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 3
    Bài viết cuối: 18-01-2011, 08:07 PM
  3. bài tập C++ về danh sách liên kết. mong anh em CĐV giúp đỡ
    Gửi bởi sky-love trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 3
    Bài viết cuối: 18-11-2010, 06:31 PM
  4. Bài tập C++ Danh sách liên kết để lưu trữ danh sách phim. Sửa giúp mình?
    Gửi bởi amidamaru trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 12
    Bài viết cuối: 03-09-2010, 04:14 PM
  5. Danh sách liên kết đơn(mong su giup do cua cac ban)
    Gửi bởi tuanit0812 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 6
    Bài viết cuối: 04-12-2009, 06:29 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