Cấu trúc dữ liệu và giải thuật - CĐN Công nghiệp Hà Nội - 22

printf(" 1. Khoi tao danh sach n");

printf(" 2. Nhap cac phan tu cho danh sachn"); printf(" 3. In cac phan tu cua danh sachn"); printf(" 4. Tim mot phan tu cua danh sachn");

printf(" 5. Bo sung mot phan tu vao sau mot phan tu n"); printf(" 6. Bo sung mot phan tu vao truoc mot phan tun"); printf(" 7. Xoa mot phan tu cua mangn");

printf(" 0. Thoat khoi chuong trinhn"); printf(" Nhap so tuong ung: ");

scanf("%d",&chon); return (chon);

}

//ham chinh main

void main()

{listnode *p,q; int chon;

char ht[30]; char kt;

Có thể bạn quan tâm!

Xem toàn bộ 200 trang tài liệu này.

ElementType sv; do

{ chon=menu();

Cấu trúc dữ liệu và giải thuật - CĐN Công nghiệp Hà Nội - 22

switch (chon)

{

case 1:


case 2:


break;


Initialize(p); break;


CreateList(p);

case 3:


printf("n Cac phan tu co trong danh sach:nn") ; Browselist(*p);


case 4:

getch(); break;


printf ("n Nhap HT can tim: "); fflush(stdin); gets(ht1);

q=SearchNode(*p,ht1); if (q!=NULL)


case 5:


else


getch(); break;

printf("n Tim thay phan tu trong Danh sach");


printf("khong tim thay phan tu trong danh sach");

printf ("n Nhap SV moi: "); NhapSinhVien(&sv);

printf ("n Nhap HT de tim vt chen sau: "); fflush(stdin);gets(ht1);

q=SearchNode(*p,ht1); if (q==NULL)


else

{

printf("n Khong tim thay phan tu trong DSn");

//q la con tro chua vi tri nut tim thay o tren

InsertAfter(p,q,sv)

printf(" Da bo sung phan tu n"); getch();


case 6:

}

break;


printf ("n Nhap HT moi: "); NhapSinhVien(&sv);

printf ("n Nhap HT de tim vt chen truoc: "); fflush(stdin); gets(ht1);

q=SearchNode(*p,ht1); if (q==NULL)

printf("n Khong tim thay phan tu trong DSn");

else

{

//q la con tro chua vi tri nut tim thay o tren

InsertBefor(p,q,sv);

printf(" Da bo sung phan tu n");

} getch(); break;


case 7:


printf ("n Nhap ht Sinh vien can xoa: "); fflush(stdin); gets(ht1);

q=SearchNode(*p,ht1); if (q==NULL)


else

printf("n Khong tim thay phan tu can xoan");


{ DeleteNode(p,q);

printf(" Da xoa phan tu n");

} getch(); break;


default: printf ("n ban chon sai roi! ");

}

} while (chon!=0);

}//ket thuc ham main

2) Chương trình chuyển đổi một số hệ 10 sang hệ 2. Sử dụng các thao tác của Stack cài đặt bằng danh sách liên kết đơn để viết chương trình

#include <stdio.h>

#include <conio.h>

#include<alloc.h>

//Đinh nghĩa kiểu phần tử typedef int ElementType; struct node

{ ElementType info; struct node* link;

};

typedef struct node* Stacknode; typedef struct

{

Stacknode top;

} Stack;

//Định nghĩa hàm khởi tạo Stack rong

void Initialize (Stack *S)

{

S ->top=NULL;

};

//Định nghĩa hàm kiểm tra Stack có rỗng không?

int Empty(Stack S)

{

return (S.top==NULL);

}

//Định nghĩa hàm đẩy một nút vào Stack

void GetNode ( Stack *S, ElementType x)

{ Stacknode q;

q=( Stacknode) malloc (sizeof(struct node)); q->info=x;

q->link=S->top; S->top=q;

}

//Định nghĩa hàm lấy một nút khỏi Stack

void RemoveNode( Stack *S, ElementType *x)

{ Stacknode q; if (Empty(*S))

printf("n Stack rong");

else

{ q=S->top;

*x=q->info;

S->top=q->link; free(q);

}

}

/*Định nghĩa hàm chuển đổi số hệ 10 sang hệ 2 và đưa từng chữ số hệ 2 vào Stack*/

void doiso(Stack *S, ElementType x)

{

while (x!=0)

{

GetNode ( S, x%2); x=x/2;

}

}

/*Định nghĩa hàm lấy từng chữ số hệ 2 và in ra màn hình*/

void inra (Stack *S)

{ ElementType x; while (!Empty(*S))

{

RemoveNode(S,&x); printf("%d",x);

}

}

//Định nghĩa hàm main

void main()

{

Stack *S;

ElementType x;

Initialize (S);

printf("nhap so he 10:");scanf("%d",&x); doiso(S,x);

inra (S);

getch();


}

}

3) Chương trình cài đặt các giải thuật sắp xếp và tìm kiếm với danh sách sinh viên được cài đặt bằng mảng

#include <stdio.h>

#include <conio.h>

#include <string.h> const int maxlist=100;

//đinh nghia ban ghi SinhVien struct SinhVien

{ char masv[10]; char Hten [35];

float LaptrinhCB, KientrucMT, MangMT, DiemTB;

};

typedef SinhVien Item; typedef struct list

{ Item element[maxlist]; int count;

};

// ham khoi tao danh sach rong

void initializeList (list *L)

{

L->count=0;

}

// ham kiem tra danh sach co rong khong?

int EmptyList(list L)

{

return (L.count==0);

}

// ham kiem tra danh sach co day khong?

int FullList(list L)

{

return (L.count==maxlist);

}

//ham bo sung sinh vien x vao vị tri pos

void insertElement (list *L, int pos, Item x)

{


else

int i;

if (FullList (*L))

printf("Danh sach day!");

if ((pos <0) || ( pos>=maxlist ))

printf("n Vi tri chen khong phu hop");

else

{


}

}


for (i=L->count;i>=pos;i--)

L-> element [i+1]= L-> element [i]; L-> element [pos]=x;

L->count++;

// ham tao danh sach

void NhapSinhVien (SinhVien *p)

{ float f; char ht[35],ma[10]; unsigned char d; unsigned int n;

fflush(stdin); //ham xoa vung dem ban phim printf("n ma sinh vien: ");

gets(ma);strcpy(p->masv,ma); printf("n Ho ten: ");

fflush(stdin);gets(ht);strcpy(p->Hten,ht);

//Nhap diem cho sinh viên printf("Diem Lap trinh CB: "); scanf("%f",&f); p->LaptrinhCB=f; printf("Diem Kien truc MT: "); scanf("%f",&f); p->KientrucMT=f; printf("Diem Mang MT: "); scanf("%f",&f); p->MangMT=f;

//Tinh diem trung bình

p->DiemTB=( p-> LaptrinhCB+ p-> KientrucMT+ p-> MangMT )/3;

}

//ham hien thong tin mot ban ghi sinh vien

void HienSinhVien (SinhVien sv)

{

printf ("n Ma sinh vien %10s", sv.masv); printf ("n Sinh vien %35s", sv.Hten);

printf ("n Diem Lap trinh CB : %4.1f", sv.LaptrinhCB); printf ("n Diem Kien truc MT : %4.1f", sv.KientrucMT); printf ("n Diem Mang MT : %4.1f", sv.MangMT);

printf ("n Diem TB : %4.1f", sv. DiemTB); getch();

}

// ham tao danh sach sinh vien

void CreateList (list *L)

{ int i=0; char kt; Item sv; do

Xem tất cả 200 trang.

Ngày đăng: 19/11/2023
Trang chủ Tài liệu miễn phí