Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 28 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
28
Dung lượng
35,69 KB
Nội dung
lÝ thuyết: Mảng: *khái niệm: mảng là 1 tập hợp có thứ tự gồm các phần tử cùng kiểu dữ liệu ->cấu trúc dữ liệu *mỗi phần tử được truy cập và xác định bởi tên mảng và chỉ số phần tử( số thứ tự phần tử) -> truy cập ngẫu nhiên *kiểu dữ liệu: 1 chiều, nhiều chiều *cấu trúc lưu trữ mảng: hình thức lưu trữ kế tiêp -địa chỉ các phần tử nối tiếp nhau -các phần tử sắp xếp theo hang -bộ nhớ cố định *đặc điểm -cấu trúc đơn giản , truy cập nhanh -thiếu mềm dẻo trong phép xóa, chèn DANH SÁCH: *khái niệm: danh sách là 1 tập có thứ tự gồm các phần tử cùng kiêu: - các phần tử biến động -các phần tử sắp xếp theo thứ tự trước- sau *Danh sách tuyến tinh: là quan hệ lân cận giữa các phần tử -hoặc là danh sách rỗng hoặc có dạng( a1,a2, an) -n là độ dài /kích thước của danh sách -mỗi phần tử thường là 1 bản ghi bao gồm 1 hoặc nhiều trường (field) * danh sách con: gồm các phần tử liên tiếp từ a1 đến aj của danh sách -nếu i =1 gọi là phần tử đầu (prefix) -nếu j=n gọi là phần tử cuối (postfix) 1 1 *dãy con: là 1 danh sách được tạo thành bằng cách loại 1 số phần tử từ danh sách . HÀNG ĐỢI *khái niệm: hang đợi là kiểu danh sách mà thao tác thêm phần tử được thực hiện ở 1 đầu danh sách con fthao tác lấy phần tử ra đươc thực hiện ở đầu kia của danh sách *nguyên tắc hoạt động: hoạt động theo nguyên tắc FIFO “vào trước – ra trước” *ví dụ: xếp hang đợi thanh toán ở siêu thị, soát vé ở rạp chiếu phim NGĂN XẾP *khái niệm: ngăn xếp à 1 kiểu danh sách mà thao tác thêm và bớt phần tử được thực hiện chỉ một đầu danh sách gọi là đỉnh *nguyên tắc hoạt động: theo nguyên tắc LIFO “vào trước – ra sau” *ví dụ. ngăn xếp tủ quần áo, chồng sách, hộp chứa đạn súng trường Bài 1 : Mảng 1 chieu // mang 1 chieu #include<stdio.h> #include<conio.h> void Nhapmang(int a[100],int n) // nhap mang { printf("nhap so phan tu mang la:"); scanf("%d",&n); 2 2 for(int i=0;i<n;i++) { printf("Phan tu thu %d cua mang la:", i+1); scanf("%d", &a[i]); } } void Xuatmang(int a[100], int n) // xuat mang { printf("\n Mang da nhap la"); for(int i=0;i<n;i++) printf("%d,", a[i]); } void sxnoibot(int a[100],int n) // sap ep noi bot { int i, j, x; for(int i=1;i<n; i++) for(int j=n;j>i; j ) if(a[j] < a[j-1]) { x = a[j]; a[j] = a[j-1]; a[j-1] = x; } void sx_chen( int a[max], int n) // sap xep chen { 3 3 int i,j,v; for( i=1; i<n; i++) { v=a[i]; j=i-1; while(a[j]>v&&j>=0) { a[j+1]=a[j]; j ; } a[j+1]=v; } } void sx_chon(int a[max], int n) // sap xep lua chon { int i , j , T for( int i=0; i<n-1; i++) { int min =i; for( int j= 1; j<n; j++) if (a[j] < a[min]) min =j; T = a[i]; a[i]=a[min]; a[min]=T; 4 4 } } void sxnhanh(int a[ ],int left,int right) { int i,j,x; i=left; j=right; x=a[left]; do { while(a[i]<x && i<right) i++; while(a[j]>x && j>left) j ; if(i<=j) { int temp=a[i]; a[i]=a[j]; a[j]=temp; i++; j ; } } while(i<=j); 5 5 if(i<right) sxnhanh(a,i,right); if(j>left) sxnhanh(a,left,j); } printf ("\n day sau khi sap xep la:"); for (int i=0; i<=n; i++) printf ("%d",a[i]); } void timchanduong(int a[100], int n) // tim phan tu duong chan dau tien cua mang { int dem = 0; for(int i=0; i<=n; i++) { if(a[i]>0 && a[i]%2==0) { printf("\n phan tu can tim %d nam o vi tri thu %d ",a[i],i); dem++; } } if(dem==0) printf("\n khong co phan tu chan duong"); } 6 6 int main() // ham chinh { int a[100], n; printf("nhap vao so phan tu mang:"); scanf("%d",&n); Nhapmang(a,n); Xuatmang(a,n); sxnoibot(a,n); timchanduong(a,n); getch(); } Bài 2 : Hàm đợi // hang doi cai dat bang mang. #include<conio.h> #include<stdio.h> #include<iostream.h> #define max 100 // toi da 100 ptu typedef struct // dinh nghia kieu 7 7 { int data[max]; int head; int tail; } queue; void khoitao(queue &q) // khoi tao { q.head=0; q.tail=-1; } int ktrong(queue &q) // kiem tra rong { return (q.tail==-1); } int ktday(queue &q) // kiem tra day { return(q.tail==max-1); } void them(queue &q,int x) // thêm phan tu { if(ktday(q)) cout<<"Hang doi day! \n"; else { q.tail++; 8 8 q.data[q.tail]=x; } } void bot(queue &q) // bot phan tu { if(ktrong(q)) cout<<"Hang doi rong! \n"; else { if(q.head==q.tail) khoitao(q); else q.head=q.head+1; } } void xuat(queue &q) // xuat ra hang doi { queue p; p=q; if(ktrong(p)) cout<<"Hang doi rong! \n"; else { 9 9 while(p.head!=p.tail+1) { cout<<p.data[p.head]<<" "; p.head=p.head+1; } } } void nhap(queue &q) // nhap hang doi { int x; while(x!=-1) { cout<<"Nhap nut, -1 de ket thuc: "; cin>>x; if(x!=-1) them(q,x); } } int main() // ham chinh { queue q; int x,a,k; khoitao(q); cout<<"Nhap du lieu cho hang doi: "; 10 10 [...]...nhap(q); xuat(q); coutnext; }; } int main() // ham chinh { queue *q; int x; khoitao(q); nhap(q); xuat(q); Pop(q); 14 14 xuat(q); getch(); } NGĂN XẾP // cai dat ngan xep bang mang #include #include #include #define max 100 struct stack{ // dinh nghia kieu int a[max]; int top; }; void khoitao(stack &s) // khoi tao {... main() // ham chinh { int x,a,k; stack s; khoitao(s); printf("Nhap du lieu cho stack: \n"); nhap(s); xuat(s); printf("Lay phan tu o dinh ngan xep:\n"); bot(s); xuat(s); 17 17 getch(); } // ngan xep bang danh sach lien ket #include #include #include typedef struct node { int d; node *next; }; typedef node *stack; void ktao(stack *top) { top=NULL;} int ktrong(stack top) // kiem... if(ktrong(top)) { printf("Ngan xep rong"); } else while(p) { printf("%4d",p->d); p=p->next; } } 19 19 int main() // ham chinh { stack top; int x; int v; ktao(&top); while (x!=-1) { printf ("nhap phan tu cho danh sach, -1 de thoat:"); scanf ("%d",&x); if (x!=-1) them(&top,x); } printf("\n Hien thi stack: "); xuat(top); //printf ("\n ds sau khi thuc hien bot\n"); //bot(&top,&v); //xuat(top); getch(); } Câu . là phần tử cuối (postfix) 1 1 *dãy con: là 1 danh sách được tạo thành bằng cách loại 1 số phần tử từ danh sách . HÀNG ĐỢI *khái niệm: hang đợi là kiểu danh sách mà thao tác thêm phần tử được. thước của danh sách -mỗi phần tử thường là 1 bản ghi bao gồm 1 hoặc nhiều trường (field) * danh sách con: gồm các phần tử liên tiếp từ a1 đến aj của danh sách -nếu i =1 gọi là phần tử đầu (prefix) -nếu. thứ tự gồm các phần tử cùng kiêu: - các phần tử biến động -các phần tử sắp xếp theo thứ tự trước- sau *Danh sách tuyến tinh: là quan hệ lân cận giữa các phần tử -hoặc là danh sách rỗng hoặc có