Hỏi đáp Code sai chổ nào ????????

Thảo luận trong 'Lập trình máy tính' bắt đầu bởi conloc171, 11 Tháng mười 2011.

  1. Offline

    conloc171

    • Thành Viên Mới

    Số bài viết:
    29
    Đã được thích:
    2
    Điểm thành tích:
    0
    Sử giúp em cái Code bên dưới:

    Mã:
    #include<conio.h>
    #include<stdio.h>
    #include<iostream.h>
    #include<string.h>
    typedef struct list {			
    			int so;	
    			list*next;	
    			};
    list*T;    				
    void tao(int x,list **Q)		
    	{
    		list *P;		
    		P=new list; 	
    		P->so=x;		
    		P->next=(*Q);	 
    		(*Q)=P;		
    	}
    void xuat(list*Q)
    	{
    		list*P;
    		P=Q;
    		while (P!=NULL)
    		{
    			printf("%3d",P->so);
    			P=P->next;
    		}
    	}
    list *Locate(int n, list *T)
    	{ 
    	List *P ;
    	int count = 1;
    	P = T;
    	while ((P!=NULL)&&(count<=n)) 
    	{
     		 count++; 
    		P=P->next;
    	}
    	return P;
    	}
    
    void chen(int x,list**T,int n)
    {
    	list*Locate(int n,list *T);
    	list *P,*Q;
    	P=new list;
    	P->so=x;
    	if(n==1)
    	{
    		P->next=(*T);
    		(*T)=P;
    	}
    	else
    	{
    		Q=(n-1,*T);
    		if (Q==NULL)
    			printf(" vi tri khong hop le ");
    		else
    		{
    			P->next=Q->next;
    			Q->next=P;
    		}
    
    	}
    }
    void xoa(int n, list**T)
    	{
    		list *Q,*P;
    		if(*T==NULL)
    		printf(" danh sach rong ");
    		else {
        if (n==1){
          P=(*T);  (*T)=P->next;  delete(P);
        }
        else {
          Q = Locate(n - 1, *T);
          if((Q==NULL)||(Q->next==NULL))
    	printf("Vi tri khong hop le");
          else{
    	P = Q->next;
    	 P->next = P->next;
    	 delete P;
          }
        }
      }
    }
    	 main()
    	{
    		int x,n;
    		char ch,c;
    		clrscr();
    		T=NULL;
    	do
    	{
    		printf("x= ");
    		scanf("%d",&x);
    		tao(x,&T);
    		printf("nhap k de thoat, nhap c de tiep tuc:\n");
    		cin>> ch;
    	}
    		while (ch!='k');
    		printf(" danh sach vua tao :\n");
    		xuat(T);
    		printf("\n nhap vao so can chen: ");
    		cin>>x;
    		printf("\n nhap vi tri can chen: ");
    		cin>>n;
    		Locate(n,T);
    		chen(x,&T,n);
    		xuat(T);
    		printf("\nvi tri can xoa:");
    		cin>>n;
    		Locate(n,T);
    		xuat(T);
    		getch();
    	return 0;
    }
    
    Nó sai như thế này đây:
    VD:
    nhập vào 5 số: 3 4 6 7 5
    số cần chèn: 9
    vị trí cần chèn :4
    kết quả: 3 9 4 6 7 5
    xóa thì không được, nó in nguyên dãy số ban đầu. Không biết sai chổ nào nửa . Mong mấy anh chị giúp em
  2. Offline

    Xautrai_LT03B

    • Windows 1.0

    Số bài viết:
    38
    Đã được thích:
    15
    Điểm thành tích:
    10
    ....................>

    bài cua ban không sai bỡi vì bạn nhap trước ra sau nên khi minh chèn vào tính từ vị trí cuối cùng ---->bạn nên chọn cấu trúc nhập trước ra trước
    :bz
    alt+F432767 thích bài này.
  3. Offline

    alt+F4

    • Core i3

    Số bài viết:
    596
    Đã được thích:
    423
    Điểm thành tích:
    450
    Thuật toán của bạn thì đúng rồi, như pác Xấu trai nói đấy, của bạn là FILO kiểu vào trước ra sau, bạn nên dùng vào trước ra trước sẽ thấy kết quả.

    có một điều mình thắc mắc, C phân biệt ký tự hoa và thường, bạn nhầm chỗ này mà sao vẫn chạy nhỉ?
  4. Offline

    conloc171

    • Thành Viên Mới

    Số bài viết:
    29
    Đã được thích:
    2
    Điểm thành tích:
    0
    viết lại code giúp em luôn cái

Chia sẻ trang này

Advertising: Linux system admin | nukeviet | nukeviet 4 | Upload ảnh miễn phí