#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct node * NodePtr;
typedef struct node
{
char kata[50];
NodePtr next;
} Node;
typedef struct list
{
NodePtr head;
unsigned jumlah;
} List;
/* prototipe */
void init(List * p);
int add(List * p, char *pt);
void display(List * p);
int remuv(List *, char *);
void freeList (List *);
int main ()
{
List huruf[26], *p=&huruf[0];
int i, menu=0;
char tampung[50], *pt=&tampung[0], tampil;
char del[50], *pd=&del[0];
char file[30];
printf("Masukkan Nama file Input (txt):");
scanf("%s",file);
for(i=0;i<26;i++)
{
init(&huruf[i]);
}
FILE *ifp=fopen(file, "r"); /* buka file */
if (ifp == NULL)
{
printf("\n Error saat fopen... \n\n");
}
while (!feof(ifp)) /* baca file dan kelompokkan */
{
fgets(tampung,50,ifp);
pt=&tampung[0];
i=*pt;
switch (i) /* memakai switch case untuk mencari kata dimasukkan dalam huruf apa */
{
/* bs diubah jadi perulangan for, dengan tambahan variabel j
* for(i=25, j=97;i<26;i--, j++)
* dengan i memegang index array, dan j memegang ascii untuk menyamakan huruf
*/
case 97: /* a */
add(&huruf[25], &tampung[0]);
break;
case 98: /* b */
add(&huruf[24], &tampung[0]);
break;
case 99:
add(&huruf[23], &tampung[0]);
break;
case 100:
add(&huruf[22], &tampung[0]);
break;
case 101:
add(&huruf[21], &tampung[0]);
break;
case 102:
add(&huruf[20], &tampung[0]);
break;
case 103:
add(&huruf[19], &tampung[0]);
break;
case 104:
add(&huruf[18], &tampung[0]);
break;
case 105:
add(&huruf[17], &tampung[0]);
break;
case 106:
add(&huruf[16], &tampung[0]);
break;
case 107:
add(&huruf[15], &tampung[0]);
break;
case 108:
add(&huruf[14], &tampung[0]);
break;
case 109:
add(&huruf[13], &tampung[0]);
break;
case 110:
add(&huruf[12], &tampung[0]);
break;
case 111:
add(&huruf[11], &tampung[0]);
break;
case 112:
add(&huruf[10], &tampung[0]);
break;
case 113:
add(&huruf[9], &tampung[0]);
break;
case 114:
add(&huruf[8], &tampung[0]);
break;
case 115:
add(&huruf[7], &tampung[0]);
break;
case 116:
add(&huruf[6], &tampung[0]);
break;
case 117:
add(&huruf[5], &tampung[0]);
break;
case 118:
add(&huruf[4], &tampung[0]);
break;
case 119:
add(&huruf[3], &tampung[0]);
break;
case 120:
add(&huruf[2], &tampung[0]);
break;
case 121:
add(&huruf[1], &tampung[0]);
break;
case 122:
add(&huruf[0], &tampung[0]);
break;
}
}
printf("\nkata telah di kelompokkan\n");
while(menu!=3)
{
printf("menu. \n1.tampil \n2.hapus \n3.exit \n");
scanf("%d", &menu);
switch (menu)
{
case 1:
printf("\nTampilkan huruf : ");
getchar();
scanf("%c", &tampil);
switch (tampil) /* copas yang diatas tapi gandi add nya jadi display */ /* bisa diubah pake for juga, */
{
case 97:
display(&huruf[25]);
break;
case 98: /* b */
display(&huruf[24]);
break;
case 99: /* z */
display(&huruf[23]);
break;
case 100: /* z */
display(&huruf[22]);
break;
case 101: /* z */
display(&huruf[21]);
break;
case 102: /* z */
display(&huruf[20]);
break;
case 103: /* z */
display(&huruf[19]);
break;
case 104: /* z */
display(&huruf[18]);
break;
case 105: /* z */
display(&huruf[17]);
break;
case 106: /* z */
display(&huruf[16]);
break;
case 107: /* z */
display(&huruf[15]);
break;
case 108: /* z */
display(&huruf[14]);
break;
case 109: /* z */
display(&huruf[13]);
break;
case 110: /* z */
display(&huruf[12]);
break;
case 111: /* z */
display(&huruf[11]);
break;
case 112: /* z */
display(&huruf[10]);
break;
case 113: /* z */
display(&huruf[9]);
break;
case 114: /* z */
display(&huruf[8]);
break;
case 115: /* z */
display(&huruf[7]);
break;
case 116: /* z */
display(&huruf[6]);
break;
case 117: /* z */
display(&huruf[5]);
break;
case 118: /* z */
display(&huruf[4]);
break;
case 119: /* z */
display(&huruf[3]);
break;
case 120: /* z */
display(&huruf[2]);
break;
case 121: /* z */
display(&huruf[1]);
break;
case 122:
display(&huruf[0]);
break;
}
break;
case 2:
printf("\n kata yang dihapus : ");
scanf("%s", del);
pd=&del[0];
i=*pd;
switch (i) /* diubah ke for juga bisa */
{
case 97:
p=&huruf[25];
if(p->jumlah==0)
{
printf("\n kata yang dicari tidak ada ");
}
remuv(&huruf[25], &del[0]);
break;
case 98:
p=&huruf[24];
if(p->jumlah==0)
{
printf("\n kata yang dicari tidak ada ");
}
remuv(&huruf[24], &del[0]);
break;
case 99:
p=&huruf[23];
if(p->jumlah==0)
{
printf("\n kata yang dicari tidak ada ");
}
remuv(&huruf[23], &del[0]);
break;
case 100:
p=&huruf[22];
if(p->jumlah==0)
{
printf("\n kata yang dicari tidak ada ");
}
remuv(&huruf[22], &del[0]);
break;
case 101:
p=&huruf[21];
if(p->jumlah==0)
{
printf("\n kata yang dicari tidak ada ");
}
remuv(&huruf[21], &del[0]);
break;
case 102:
p=&huruf[20];
if(p->jumlah==0)
{
printf("\n kata yang dicari tidak ada ");
}
remuv(&huruf[20], &del[0]);
break;
case 103:
p=&huruf[19];
if(p->jumlah==0)
{
printf("\n kata yang dicari tidak ada ");
}
remuv(&huruf[19], &del[0]);
break;
case 104:
p=&huruf[18];
if(p->jumlah==0)
{
printf("\n kata yang dicari tidak ada ");
}
remuv(&huruf[18], &del[0]);
break;
case 105:
p=&huruf[17];
if(p->jumlah==0)
{
printf("\n kata yang dicari tidak ada ");
}
remuv(&huruf[17], &del[0]);
break;
case 106:
p=&huruf[16];
if(p->jumlah==0)
{
printf("\n kata yang dicari tidak ada ");
}
remuv(&huruf[16], &del[0]);
break;
case 107:
p=&huruf[15];
if(p->jumlah==0)
{
printf("\n kata yang dicari tidak ada ");
}
remuv(&huruf[15], &del[0]);
break;
case 108:
p=&huruf[14];
if(p->jumlah==0)
{
printf("\n kata yang dicari tidak ada ");
}
remuv(&huruf[14], &del[0]);
break;
case 109:
p=&huruf[13];
if(p->jumlah==0)
{
printf("\n kata yang dicari tidak ada ");
}
remuv(&huruf[13], &del[0]);
break;
case 110:
p=&huruf[12];
if(p->jumlah==0)
{
printf("\n kata yang dicari tidak ada ");
}
remuv(&huruf[12], &del[0]);
break;
case 111:
p=&huruf[11];
if(p->jumlah==0)
{
printf("\n kata yang dicari tidak ada ");
}
remuv(&huruf[11], &del[0]);
break;
case 112:
p=&huruf[10];
if(p->jumlah==0)
{
printf("\n kata yang dicari tidak ada ");
}
remuv(&huruf[10], &del[0]);
break;
case 113:
p=&huruf[9];
if(p->jumlah==0)
{
printf("\n kata yang dicari tidak ada ");
}
remuv(&huruf[9], &del[0]);
break;
case 114:
p=&huruf[8];
if(p->jumlah==0)
{
printf("\n kata yang dicari tidak ada ");
}
remuv(&huruf[8], &del[0]);
break;
case 115:
p=&huruf[7];
if(p->jumlah==0)
{
printf("\n kata yang dicari tidak ada ");
}
remuv(&huruf[7], &del[0]);
break;
case 116:
p=&huruf[6];
if(p->jumlah==0)
{
printf("\n kata yang dicari tidak ada ");
}
remuv(&huruf[6], &del[0]);
break;
case 117:
p=&huruf[5];
if(p->jumlah==0)
{
printf("\n kata yang dicari tidak ada ");
}
remuv(&huruf[5], &del[0]);
break;
case 118:
p=&huruf[4];
if(p->jumlah==0)
{
printf("\n kata yang dicari tidak ada ");
}
remuv(&huruf[4], &del[0]);
break;
case 119:
p=&huruf[3];
if(p->jumlah==0)
{
printf("\n kata yang dicari tidak ada ");
}
remuv(&huruf[3], &del[0]);
break;
case 120:
p=&huruf[2];
if(p->jumlah==0)
{
printf("\n kata yang dicari tidak ada ");
}
remuv(&huruf[2], &del[0]);
break;
case 121:
p=&huruf[1];
if(p->jumlah==0)
{
printf("\n kata yang dicari tidak ada ");
}
remuv(&huruf[1], &del[0]);
break;
case 122:
p=&huruf[0];
if(p->jumlah==0)
{
printf("\n kata yang dicari tidak ada ");
}
remuv(&huruf[0], &del[0]);
break;
}
case 3:
break;
}
}
fclose(ifp);
return EXIT_SUCCESS;
}
void init(List * p)
{
p->head=NULL;
p->jumlah=0;
}
int add(List * p, char * pt)
{
NodePtr new;
int i=0;
new = malloc(sizeof(Node));
if(new == NULL)
{
printf("\n Error dalam membuat alokasi memori \n");
return 0;
}
for(;*pt!='\n';i++, pt++)
{
new->kata[i]=*pt;
}
new->next=p->head;
p->head=new;
p->jumlah++;
return 1;
}
void display(List * p)
{
NodePtr current = p->head;
int x = 0;
printf("\n");
while (current != NULL && x<10)
{
printf("%s \n", current -> kata);
current = current -> next;
x++;
}
printf("null\n");
}
int remuv (List * lptr, char * delete)
{
NodePtr delhead = lptr -> head;
NodePtr current = delhead->next;
NodePtr del = current->next ;
int y = 0;
if(strcmp(delhead->kata, delete)==0) /* apabila kata yang dihapus didepan head */
{
lptr->head=current;
free(delhead);
current=NULL;
y++;
}
while(current != NULL)
{
// next = current -> next;
if (strcmp (current -> kata, delete)==0)
{
y++;
delhead->next=del;
free(current);
lptr -> jumlah--;
// p -> next = next;
break;
}
else
{
// p = current;
if(del!=NULL)
{
delhead=current;
current=del;
del=current->next;
}
else
{
delhead=current;
current=del;
}
}
// current = next;
}
if(y==0)
{
printf("Kata %s tidak ditemukan \n\n", delete);
}
return 0;
}
====================================================================
DAN INI TXT NYA
http://www.informatika.unsyiah.ac.id/tfa/ds/dbterms.txt