Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 12 kết quả

Đề tài: [ Solved ]Đảo ngược danh sách liên kết

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

    Mặc định [ Solved ]Đảo ngược danh sách liên kết

    Ta nhập vào 1 dslk sau đó đảo ngược danh sách liên kết đó lại.
    VD ta nhập : 1 2 3 4 5
    Thì trong danh sách liên kết sẽ là : 5 4 3 2 1.
    Tiện thể giúp em phương pháp tìm kiếm = Bubble sort và QuickSort luôn nhe !

  2. #2
    Ngày gia nhập
    12 2006
    Nơi ở
    US
    Bài viết
    1,917

    Vậy danh sách liên kết in ra bình thường đã làm đâu ?

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

    Trích dẫn Nguyên bản được gửi bởi atuan1989 Xem bài viết
    Ta nhập vào 1 dslk sau đó đảo ngược danh sách liên kết đó lại.
    VD ta nhập : 1 2 3 4 5
    Thì trong danh sách liên kết sẽ là : 5 4 3 2 1.
    Tiện thể giúp em phương pháp tìm kiếm = Bubble sort và QuickSort luôn nhe !
    nếu bạn nhấp vào 1 2 3 4 5 thì tất nhiên nó sẽ in ra 5 4 3 2 1(vì danh sách liên kết mình mới chỉ biết thêm 1 nút vào đầu danh sách thôi mà không biết thêm vào cuối)
    còn in ngược là 1 2 3 4 5.
    Time

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

    Em để trong 1 cái hàm void main khó coi xin thông cảm
    Code:
    #include <conio.h>
    #include <stdio.h>
    #include <iostream.h>
    #include <alloc.h>
    struct node
    {
    	int element;
    	struct node *next;
    } *first = NULL, *last = NULL;
    
    void insert(int e)
    {
    	struct node *tmp;
    	tmp = (struct node*) malloc(sizeof(struct node));
    	tmp->element = e;
    	tmp->next = NULL;
    	if (first == NULL)
    		first = last = tmp;
    	else
    	{
    		last->next = tmp;
    		last = last->next;
    	}
    }
    void main()
    {
    	clrscr();
    	struct node *tmp;
    	struct node *p,*pmin;
    	struct node *q;
    	struct node *tam,*the;
    	int n,i=0,e,min,dem;
    	cout<<"Nhap so luong n: ";
    	cin>>n;
    	cout<<"Nhap cac phan tu:\n";
    	// Nhap cac so nguyen
    	while(i<n)
    	{
    		cin>>e;
    		insert(e);
    		tmp=tmp->next;
    		i++;
    	}
    	// Sap xep thu tu
    	for(tmp = first; tmp->next != NULL; tmp =tmp->next)
    	{
    		min = tmp->element;
    		pmin = tmp;
    		for(p = tmp->next;p != NULL; p = p->next)
    			if( min > p->element )
    			{
    				min = p->element;
    				pmin = p;
    			}
    		pmin->element = tmp->element;
    		tmp->element = min;
    
    	}
    	// Xuat chuoi
    	cout<<"Chuoi sau khi sap sep:\n";
    	for(tmp = first; tmp != NULL ; tmp=tmp->next)
    	{
    		cout<<tmp->element<<" ";
    	}
    	// Dem so lan xuat hien cua 1 phan tu
    	for(tmp = first; tmp != NULL; tmp=tmp->next)
    	{
    		for(q = first , dem=0; q != NULL; q=q->next)
    		{
    			if(tmp->element == q->element)
    			dem++;
    		}
    		cout<<"\nSo "<<tmp->element<<" xuat hien "<<dem<<" lan\n";
    	}
    	// Dao nguoc L
    
    
    
    	getch();
    }
    Tiện thể cho em hỏi cái đếm số lần xuất hiện của các phần tử luôn nha. VD 1 2 2 3 4 4 thì kết quả là 1 xuất hiệ 1 lần 2 xuất hiện 2 lần....
    Em cũng làm đc nhưng hơi sai 1 tý.
    VD như 1 xuất hiện 1 lần 2 xuất hiện 2 lần 2 xuất hiện 2 lần. Nghĩa là nó bi. lặp lại đó, ai fix đc giúp em hoàn thiện bài nha ^^

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

    Trích dẫn Nguyên bản được gửi bởi nthung Xem bài viết
    nếu bạn nhấp vào 1 2 3 4 5 thì tất nhiên nó sẽ in ra 5 4 3 2 1(vì danh sách liên kết mình mới chỉ biết thêm 1 nút vào đầu danh sách thôi mà không biết thêm vào cuối)
    còn in ngược là 1 2 3 4 5.
    tại sao mình nhấp 1 2 3 4 5 thì nó sẽ in ra 5 4 3 2 1 vậy bạn :-s

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

    Mặc định [ Solved ]Đảo ngược danh sách liên kết

    Theo em nghĩ cái bài cũa em đã đc sắp sếp thứ tự rùi vì thế việc đảo lại ko khó. Vì đang đc sắp sếp tăng dần rùi mình chỉnh nó lại thành giảm dần thì coi như là đã đảo, điều em nói là danh sách chưa đc sắp sếp đó nha ^^

  7. #7
    Ngày gia nhập
    07 2006
    Nơi ở
    Hanoi, Vietnam
    Bài viết
    2,750

    Sử dụng stack, trong diễn đàn có nhiều bài viết về stack lắm đó.
    Email: admin[@]congdongcviet.com | CC to: info[@]congdongcviet.com
    Phone: 0972 89 7667 (Office: 04 6329 2380)
    Yahoo & Skype: dreaminess_world (Vui lòng chỉ rõ mục đích ngay khi liên hệ, cảm ơn!)

    Một người nào đó coi thường ý thức kỷ luật cũng có nghĩa là người đó đã coi thường tương lai số phận của chính bản thân người đó. Những người coi thường ý thức kỷ luật sẽ không bao giờ có được sự thành công trong sự nghiệp!

  8. #8
    Ngày gia nhập
    10 2006
    Nơi ở
    In Your Bugs
    Bài viết
    823

    Nếu mà đảo ngược 1 cách bình thường thì có thể dùng Stack !
    PHP Code:
    While(!list.isEmpty())
    {
       
    stack.push(list.entry);
    }
    list.
    makeEmpty();
    while(!
    stack.isEmpty())
    {
       list.
    insert(stack.pop());

    Còn nếu cậu đã viết chèn vào cuối thì có thể làm cách khác.

  9. #9
    Ngày gia nhập
    10 2007
    Nơi ở
    Gameloft studio
    Bài viết
    175

    Trích dẫn Nguyên bản được gửi bởi atuan1989 Xem bài viết
    tại sao mình nhấp 1 2 3 4 5 thì nó sẽ in ra 5 4 3 2 1 vậy bạn :-s
    Đối với bài của bạn thì đúng là nhập vào 1 2 3 4 5 thì in ra 5 4 3 2 1. Nhưng nói về danh sách liên kết thì cần phải coding nhiều hơn:
    - Thêm một nút ở đầu.
    - Thêm một nút ở cuối.
    - Thêm một nút sau nút thứ i.
    - Xóa nút ở đầu.
    - Xóa nút ở cuối.
    - Xóa nút thứ i.
    ... nhiều là đằng khác.
    Không biết ghi gì luôn ...

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

    Code:
    #include"stdio.h"
    #include"conio.h"
    #include"string.h"
    void main()
    {
     clrscr();
     char chuoi1[100],chuoi2[100],chuoi3[100];
     printf("Nhap vao day doan van ban:\n ");
     gets(chuoi1);
     printf("\nviet hoa la:\n "); //strupr chuyen thanh chu hoa       cu phap: puts(strupr(ten bien chuoi))
     puts(strupr(chuoi1));
     printf("\nviet thuong la:\n "); //strlwr chuyen thanh chu thuong cu phap: puts(strlwr(ten bien chuoi))
     puts(strlwr(chuoi1));
     printf("\ndoan van ban tren co %d ki tu tinh luon ca khoang trong\n",strlen(chuoi1));//dem so ki tu Cu phap:strlen(ten_bien_chuoi)
    
    
    
     printf("\n");
     printf("Nhap vao doan van ban khac bang chu hoa:\n ");
     gets(chuoi2);
     printf("\nchuyen thanh chu thuong la\n ");
     puts(strlwr(chuoi2));
     printf("\nchuyen thanh chu hoa lai la\n ");
     puts(strupr(chuoi2));
     printf("\nchuoi tren co %d ki tu tinh luon ca khoang trong\n",strlen(chuoi2));
    
     strcat(chuoi1,chuoi2);  //noi 1 chuoi nay voi 1 chuoi kia,gan lai bien ki tu dau tien gom ca 2 chuoi Cu phap:strcat(chuoi1,chuoi2)
     printf("\nnoi 2 doan se la: %s co so ki tu la %d\n",chuoi1,strlen(chuoi1));
     printf("\n\n\n");
    
     printf("\nDao nguoc doan van ban vua nhap la : %s",strrev(chuoi1)); //dao nguoc chuoi Cu phap:strrev(ten bien chuoi)
     getch();
    }

    Cho bạn cái code này đó
    nếu xài hàm thì nhanh hơn nhiều đó bạn
    strrev

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

  1. [ Solved ]Hỏi về danh sách liên kết
    Gửi bởi zaizai152 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 3
    Bài viết cuối: 27-11-2008, 07:18 PM
  2. [ Solved ]Coi giùm em cái danh sách liên kết này với!!!
    Gửi bởi Kan trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 7
    Bài viết cuối: 25-10-2008, 10:13 PM
  3. [ Solved ]Xin ví dụ về danh sách liên kết
    Gửi bởi Nemo_wf 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: 21-09-2008, 11:50 PM
  4. [ Solved ] sử dụng danh sách liên kết đơn lưu trữ, thưc hiên một vài phép toán!
    Gửi bởi quangminh_vp 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: 20-09-2008, 11:14 PM
  5. [ Solved ]Danh sách liên kết
    Gửi bởi pa_ven trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 9
    Bài viết cuối: 12-05-2008, 04:04 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