cutuan527 Moderators
Tổng số bài gửi : 1051 Join date : 26/04/2009 Age : 33 Đến từ : Vĩnh Long
| Tiêu đề: Bài tập thực hành về CTDL Mon Dec 14, 2009 9:05 pm | |
| | | | | Bài 1: Chèn phần tử (chèn giữa hình như có vấn đề , các bạn coi rùi chỉnh lại - Trích dẫn :
- #include"iostream.h"
#include"conio.h" #include"alloc.h" #include"stdio.h" typedef struct node{ int info; node* next; }; typedef struct node* Node; Node phead=NULL; Node ptail=NULL;
Node getnode(int value){ Node p=(Node)malloc(sizeof(Node)); p->info=value; p->next=NULL; return p; } void chencuoi(int value){ Node p=getnode(value); if(phead==NULL) phead=ptail=p; else { ptail->next=p; ptail=p; } } void push(int value){ Node p; p=getnode(value); if(phead==NULL) phead=ptail=p; else { p->next=phead; phead=p; } } void chengiua(Node q,Node p,int v){
if(q!=NULL){
p->next=q->next; q->next=p; if(q==ptail){ ptail=p; } } else{ push(v); } } void print() {
Node p=phead; while(p!=NULL){ printf("%d->",p->info); p=p->next; } } void main(){ clrscr(); int n, value,v,m; printf("Nhap n: "); scanf("%d",&n); for(int i=1;i<=n;i++) { printf("Nhap gia tri thu %d: ",i); scanf("%d",&value); chencuoi(value); } printf("\nChuoi vua nhap la: "); print(); printf("\nNhap phan tu can chen: "); scanf("%d",&v); printf("\nNhap vao vi tri can chen trong chuoi: "); scanf("%d",&m); Node p=getnode(v); Node q; q->info=m; chengiua(q,p,v); print(); getch(); }
Bài 2: Xóa phần tử - Trích dẫn :
- #include"conio.h"
#include"stdio.h" #include"alloc.h" typedef struct node{ int info; node* next; }; typedef node* Node; Node phead=NULL; Node ptail=NULL; Node getnode(int gt){ Node p; p=(Node)malloc(sizeof(Node)); p->info=gt; p->next=NULL; return p; } void chencuoi(int gt){ Node p=getnode(gt); if(phead==NULL) phead=ptail=p; else { ptail->next=p; ptail=p; } } void xuat() { Node p=phead; while(p!=NULL) { printf("%d->",p->info); p=p->next; } } void xoadau(){ int value; Node p=phead; phead=p->next; value=p->info; free(p); } void xoacuoi(){ int value; if((ptail==NULL)||(phead==NULL)) { printf("Danh sach rong !!!"); } Node p=phead; while((p->next!=ptail)&&(p->next!=NULL)) { p=p->next; } value=ptail->info; if(phead==ptail) { free(phead); phead=ptail=NULL; } else { ptail=p; free(p->next); ptail->next=NULL; } } int dem_so_node(Node p){ int dem=0; while(p!=NULL){ p=p->next; dem++; } return dem; }
void xoagiua(int vt){ Node p; Node q=phead; int dem=0; int n=dem_so_node(q); if(vt==0) xoadau(); else { if(vt==n-1) xoacuoi(); } if(vt<0||vt>n-1) printf("Khong xoa duoc, phan tu khong nam trong danh sach"); else { while(dem!=vt-1){ dem++; q=q->next; } p=q->next; q->next=p->next; free(p); } } void main(){ clrscr(); int vt,x,n,gt; printf("Nhap so phan tu cua danh sach: "); scanf("%d",&n); for(int i=0;i<n;i++) { printf("Nhap phan tu thu %d: ",i); scanf("%d",>); chencuoi(gt); } printf("\nDanh sach vua nhap la: "); xuat(); printf("\nNhap vao vi tri can xoa: "); scanf("%d",&vt); xoagiua(vt); printf("\nDanh sach sau khi xoa:"); xuat(); getch(); }
Có thể bài 2 có sai sót, mình hổng nhớ là sửa lại chưa nữa, các bạn coi thử nhe !!!
Bài 3: Sắp xếp - Trích dẫn :
- #include"conio.h"
#include"stdio.h" #include"alloc.h" typedef struct node{ int info; node* next; }; typedef struct node* Node; Node phead=NULL; Node ptail=NULL; Node getnode(int x){ Node p=(Node)malloc(sizeof(Node)); p->info=x; p->next=NULL; return p; } void chendau(int gt){ Node p=getnode(gt); if(phead==NULL) phead=ptail=p; else { p->next=phead; phead=p; } } void chencuoi(int gt){ Node p=getnode(gt); if(phead==NULL) phead=ptail=p; else { ptail->next=p;
ptail=p; } }
void swap(Node p1,Node p2){ int temp=p1->info; p1->info=p2->info; p2->info=temp; } void sortlist(){ Node p1=phead; Node p2=phead->next; if(p2==NULL) return; while(p1->next!=NULL){ while(p2!=NULL){ if(p1->info>p2->info) swap(p1,p2); else p2=p2->next; } p1=p1->next; p2=p1->next; } } void xuat(){ Node p=phead; while(p!=NULL){ printf("%d->",p->info); p=p->next; } } void main(){ clrscr(); int n,t,gt,v,vt; Node max; printf("Nhap so phan tu: "); scanf("%d",&n); for(int i=1;i<=n;i++) { printf("\nNhap vao gia tri thu %d: ",i); scanf("%d",>); chencuoi(gt); } printf("\nDanh sach vua nhap la: "); xuat(); sortlist(); printf("\nDanh sach da duoc sap xep: "); xuat(); getch(); }
| | | | |
|
|
nguyenthanhvu Thành viên cấp 5
Tổng số bài gửi : 300 Join date : 09/05/2009 Đến từ : CNTT2_K9
| Tiêu đề: Re: Bài tập thực hành về CTDL Mon Dec 14, 2009 11:41 pm | |
| |
|
cutuan527 Moderators
Tổng số bài gửi : 1051 Join date : 26/04/2009 Age : 33 Đến từ : Vĩnh Long
| Tiêu đề: Re: Bài tập thực hành về CTDL Tue Dec 15, 2009 7:58 am | |
| |
|
caingocthanh Moderators
Tổng số bài gửi : 559 Join date : 27/04/2009 Age : 35 Đến từ : Cà Mau
| Tiêu đề: Re: Bài tập thực hành về CTDL Tue Dec 15, 2009 6:29 pm | |
| |
|
Sponsored content
| Tiêu đề: Re: Bài tập thực hành về CTDL | |
| |
|