Giúp em môn cấu trúc dữ liệu với?

Thảo luận trong 'Hỏi đáp chung' bắt đầu bởi o0o, 28 Tháng ba 2011.

  1. Offline

    o0o

    • Thành Viên Mới

    Số bài viết:
    6
    Đã được thích:
    0
    Điểm thành tích:
    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. Offline

    trungqn1

    • Friends

    Số bài viết:
    390
    Đã được thích:
    162
    Điểm thành tích:
    240
    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. Offline

    takechij

    • Windows 98

    • Try so hard
    Số bài viết:
    386
    Đã được thích:
    165
    Điểm thành tích:
    140
    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. Offline

    integer

    • Tiếu Ngạo Giang Hồ

    • :-?
    Số bài viết:
    1.695
    Đã được thích:
    1.313
    Điểm thành tích:
    900
    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. Offline

    takechij

    • Windows 98

    • Try so hard
    Số bài viết:
    386
    Đã được thích:
    165
    Điểm thành tích:
    140
    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. Offline

    trsa

    • Thành Viên Mới

    Số bài viết:
    180
    Đã được thích:
    15
    Điểm thành tích:
    0
    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. Offline

    o0o

    • Thành Viên Mới

    Số bài viết:
    6
    Đã được thích:
    0
    Điểm thành tích:
    0
    thank ..^^!
  8. Offline

    takechij

    • Windows 98

    • Try so hard
    Số bài viết:
    386
    Đã được thích:
    165
    Điểm thành tích:
    140
    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

Chia sẻ trang này

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