Chào, Khách!
  1. o0o
    Offline
    o0o   [6/0]
    mấy bác giải giúp hộ em hai bai môn cấu trúc dữ liệu này cái, mai ktra mất tiu
    1, Tìm các nút có giá trị lẻ
    2, Đảo mảng
    Thank mấy bác trước
  2. trungqn1
    Offline
    trungqn1   [390/162]
    không đúng đừng chém nha

    bài 1 đây bạn ah
    Mã:
    #include<iostream.h>
    #include<stdio.h>
    #include<conio.h>
    
    //Khai bao cau truc
    struct node
    {
    	int pt;
    	struct node *next;
    };
    
    typedef node list;
    list *first,*ds2,*last;
    
    //Xoa sach cac node trong danh sach va khoi tao danh sach
    void clear_list(list **first)
    {
    	list *p=*first;
    	while(*first!=NULL)
    	{
    		*first=p->next;
    		delete(p);
    		p=*first;
    	}
    }
    
    //In danh sach
    void print_list(list *first)
    {
    	if(first==NULL)
    		printf("\nDanh sach rong");
    	else
    	{
    		list *p=first;
    		printf("\nDanh sach:\n ");
    		while(p!=NULL)
    		{
    			printf("%d\t", p->pt);
    			p=p->next;
    		}
    	}
    }
    
    //Tao danh sach moi
    void create_list(list **first)
    {
    	int n;
    	list *p;
    	printf("\nNhap gia tri: ");
    	scanf("%d",&n);
    	while(n!=0)
    	{
    		p=new node;
    		p->pt=n;
    		if(*first==NULL)
    			*first=p;
    		else
    			last->next=p;
    		last=p;
    		p->next=NULL;
    		printf( "\nNhap gia tri: ");
    		scanf("%d",&n);
    	}
    }
    
    void thaythe(list **first)
    {
    	list *p=*first;
    	while(p!=NULL)
    	{
    	if((p->pt)%2!=0)
    		p->pt=((p->pt)*(p->pt));
    	p=p->next;
    	}
    }
    
    void main()
    {
    	clear_list(&first);
    	create_list(&first);
    	print_list(first);
    	thaythe(&first);
    	print_list(first);
    	getch();
    	}
    Bài 2: chỉ có thủ tục thôi bạn bổ sung thêm hàm nhập nhé
    Mã:
    void daomang(int a[],int n)
    {
    	int tmp,j=0;
    	for(int i=n-1;i>=(n/2);i--)
    	{
    		tmp=a[j];
    		a[j]=a[i];
    		a[i]=tmp;
    		j++;
    	}
    }
    
  3. takechij
    Offline
    takechij   [386/165]
    lão trungqn1 chém gió quá [-X
    p/s: bạn o0o học lớp nào vậy, mai thầy đổi đề cho coi :)), đề này lớp mình mới kiểm tra chiều nay :))
  4. integer
    Offline
    integer   [1.695/1.313]
    cái này không ổn. làm sao lấy kết quả ra được vì p=p->next.

    Cơ bản là thế này nhé:
    Mã:
    int find(list **T)
    {
        list *P,*Q;
        P=*T,Q=*T;
        int count =0;
        while(P->link != NULL)
        {
            count++;
            if(P->pt%2 != 0)
            {
                xoa(count,&Q);
                int u=(P->pt)*(P->pt);
                chensau(u,&Q,count);
            }
            P=P->link;
        }
        *T=Q;
    }
    
    
    các hàm di kèm liên qua là:
    chensau(u,&Q,count) u: số cần chèn . Q: danh sách cần chèn. count: vị trí chèn.
    xoa(count,&Q) count: vị trí xóa. Q: danh sách cần xóa

    các hàm xóa và chèn tại vị trí xác định trong danh sách các bạn viết được phía trên rồi.
  5. takechij
    Offline
    takechij   [386/165]
    code bạn trungqn1 post là mình code đấy, chạy hoàn toàn OK :|
    bạn chú ý con trỏ firist, mình dùng nó để trỏ đầu danh sách mà :|
  6. trsa
    Offline
    trsa   [180/15]
    Cho mình góp ý tí nha. Các bạn viết khó đọc wa. mình nên dùng ->next (trỏ tới), ->prev(trỏ ngược lại sau) như thế người đọc sẽ dễ phân biệt hơn
  7. o0o
    Offline
    o0o   [6/0]
    thank ..^^!
  8. takechij
    Offline
    takechij   [386/165]
    2 con trỏ như vậy thì thường thì cho danh sách liên kết kép mà :-/, phần này hok học nên mình hok dám chắc :D