Vậy danh sách liên kết in ra bình thường đã làm đâu?
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 !
Vậy danh sách liên kết in ra bình thường đã làm đâu?
Time
Em để trong 1 cái hàm void main khó coi xin thông cảm
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....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(); }
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 ^^
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 ^^
Sử dụng stack, trong diễn đàn có nhiều bài viết về stack lắm đó.
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 đó.Email: kevin[@]congdongcviet.com | CC to: info[@]congdongcviet.com
Phone: 0972 89 7667
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 hoặc bị sự thiếu kỷ luật làm tiêu tan sự nghiệp.
Nếu mà đảo ngược 1 cách bình thường thì có thể dùng Stack !
Còn nếu cậu đã viết chèn vào cuối thì có thể làm cách khác.PHP Code:While(!list.isEmpty())
{
stack.push(list.entry);
}
list.makeEmpty();
while(!stack.isEmpty())
{
list.insert(stack.pop());
}
Đố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 ...
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