Tải bản đầy đủ (.doc) (6 trang)

bang bam

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (38.68 KB, 6 trang )

<span class='text_page_counter'>(1)</span><div class='page_container' data-page=1>

#include "stdio.h"
#include "conio.h"
#include "ctype.h"
#include "stdlib.h"
#include "string.h"
#define B 10


typedef char Data[25];
typedef struct Node {
Data Key;


Node *Next;
};


typedef Node *TNode;
typedef TNode Tab[B];
//Khoi tao 1 nut


TNode GetNode(Data Key) {
TNode p;


p =(TNode)malloc(sizeof(Node));
strcpy(p->Key,Key);


p->Next = NULL;
return p;


}


//chuyen chuoi sang so



long int StringToNumber(Data Key) {
int temp = 0;


for(int i = 0; i<strlen(Key); i++)
temp+=(int)Key[i];


return temp;
}


//ham bam


int H(long int k) {
return k%B;
}


//khoi tao ban bam rong
void MakeNull(Tab *T) {
for(int i=0; i<B; i++)
(*T)[i] = NULL;
}


//kiem tra nut tren bang bam
char Member(Data Key, Tab T) {
TNode p;


</div>
<span class='text_page_counter'>(2)</span><div class='page_container' data-page=2>

while(p && strcmp(Key,p->Key))
p = p->Next;


return (p!= NULL);
}



//them 1 nut


void Insert(Data Key, Tab *T) {
if(Member(Key,*T))


printf("\nKhoa da ton tai.");
else


{


int i = H(StringToNumber(Key));
TNode p;


//chen dau


p = GetNode(Key);
p->Next = (*T)[i];
(*T)[i] = p;


}
}


//xoa 1 node


void DeleteNode(Data Key, Tab *T){
int i = H(StringToNumber(Key));
if(!Member(Key,*T)){


printf("\nKhong ton tai khoa \"%s\".",Key);


getch();


}
else {


TNode p, q;
p = q = (*T)[i];


while(p && strcmp(p->Key,Key)){
q = p;


p = p->Next;
}


if(p==(*T)[i]) { //xoa dau
(*T)[i] = p->Next;


free(p);
}


else


if(p->Next==NULL) //xoa cuoi
{


q->Next = NULL;
free(p);


</div>
<span class='text_page_counter'>(3)</span><div class='page_container' data-page=3>

else { //xoa giua
q->Next = p->Next;



free(p);
}


}
}


//Xoa 1 khoa


void DeleteKey(int i, Tab *T){
TNode p, q;


p = (*T)[i];
while(p){
q = p;


p = p->Next;
free(q);
}


(*T)[i] = NULL;
}


//xoa toan bo ban bam
void Delete(Tab *T) {
for(int i=0; i<B; i++)
DeleteKey(i,T);
}


//duyet theo khoa



void WriteKey(int i, Tab T) {
TNode p = T[i];


printf("\nT[%d] : ",i);
while(p){


printf("%s\t-- ",p->Key);
p = p->Next;


}
}


//duyet toan ban bam
void Write(Tab T){


printf("\nBANG BAM MO");
for(int i=0; i<B; i++)
WriteKey(i,T);
}


//giao dien chuong trinh
int Menu() {


</div>
<span class='text_page_counter'>(4)</span><div class='page_container' data-page=4>

printf(" 1. Them mot nut vao bang bam\n");
printf(" 2. Xoa 1 nut trong bang bam\n");
printf(" 3. Xoa 1 khoa trong bang bam\n");
printf(" 4. Xoa toan bo bang bam\n");
printf(" 5. Duyet bang bam\n");



printf(" 6. Tim kiem 1 nut tren bang bam\n");
printf(" 7. Ket thuc chuong trinh.\n");


printf(" Chon tu 1 den 7: ");
scanf("%d",&ch);


return ch;
}


//chuong trinh chinh
void main() {


Tab T;


char ch, flag = 1;
Data Key;


MakeNull(&T);
while(flag){
ch = Menu();
switch(ch){
case 1:
{


clrscr();


printf("THEM 1 NUT MOI VAO BANG BAM\n");
printf("Nhap nut: ");


flushall();


gets(Key);
Insert(Key,&T);
getch();


break;
}


case 2:
{


clrscr();


printf("XOA 1 NUT KHOI BANG BAM\n");
printf("Nhap nut: ");


flushall();
gets(Key);


DeleteNode(Key,&T);
getch();


</div>
<span class='text_page_counter'>(5)</span><div class='page_container' data-page=5>

case 3:
{


clrscr();


printf("XOA 1 KHOA KHOI BANG BAM\n");
printf("Nhap khoa: ");


int k;



scanf("%d",&k);
if(k>=0 && k<B) {
DeleteKey(k,&T);


printf("Da xoa xong.");
}


else


printf("Khoa khong ton tai.");
getch();


break;
}


case 4:
{


clrscr();


printf("XOA TOAN BO BANG BAM\n");
printf("Ban co chac khong?(C/K)");
flushall();


ch = getch();
ch =_toupper(ch);
if(ch=='C')
MakeNull(&T);
break;



}


case 5:
{


clrscr();


printf("DUYET BANG BAM");
Write(T);


getch();
break;
}


case 6:
{


clrscr();


</div>
<span class='text_page_counter'>(6)</span><div class='page_container' data-page=6>

gets(Key);


if(!Member(Key,T))


printf("Khong tim thay \"%s\" tren bang bam",Key);
else


printf(" Khoa \"%s\" co trong
T[%d]",Key,H(StringToNumber(Key)));



getch();
break;
}


case 7: flag = 0;
default: break;
}


</div>

<!--links-->

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×