程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> 代碼-數據結構預算法 要求統計自己輸入文本的數字字母或者文字的個數 把學生獨立完成部分填上

代碼-數據結構預算法 要求統計自己輸入文本的數字字母或者文字的個數 把學生獨立完成部分填上

編輯:編程綜合問答
數據結構預算法 要求統計自己輸入文本的數字字母或者文字的個數 把學生獨立完成部分填上

#include
#include
#include
#include
#include
#define MAXSIZE 1000
#define MAXLEN 20
#define MAXNUM 16
#define FALSE 0
#define TRUE 1
/*---------------堆結構的定義---------------*/
typedef struct{
char stores[MAXSIZE];
int freep; //當前可用空間開始位置
}HeapSpace;
HeapSpace sp;
/*-------------單詞數據類型定義-------------*/
/*-----------單詞在堆中的位置描述-----------*/
typedef struct{
int stadr; //單詞在對空間中的開始位置
int len; //單詞長度
}WordType;
/*----------------單詞描述-------------------*/
typedef struct{
char ch[MAXLEN]; //單詞字符串
int size; //單詞長度
}Sequence;
/*---------------有序表類型定義---------------*/
/*-------------單詞有序表結點定義-------------*/
typedef WordType ElemType;
typedef struct NodeType{
ElemType data;
struct NodeType next;
}NodeType,*LinkType;
/
----------------單詞有序表定義--------------*/
typedef struct{
LinkType head; //有序表頭指針
LinkType tail; //有序表尾指針
int size; //有序表結點個數
}OrderList;
/*---記錄一行中匹配成功單詞在目標詞匯表中的位置---*/
typedef struct{
int eqelem[MAXNUM]; //單詞在目標詞匯表中的位置
int last; //匹配成功單詞的個數
}EqelemList;
/*-----------文件測試相關的數據類型定義-----------*/
/*--------------單詞在文件中的位置----------------*/
typedef struct Node{
int elem; //被測單詞在文件中的行號
struct Node next;//指向下一個行號結點的指針
}Node,*Link;
/
-----------單詞統計分析記錄結構定義-------------*/
typedef struct{
WordType data; //被測試的單詞
int count; //在文件中出現的次數
Link next; //記錄出現的所有行號的臉表頭指針
}HeadNode;
/*---------文本文件測試結果記錄定義---------------*/
typedef HeadNode ResultType[MAXNUM];
typedef int status;
/*------------與單詞相關的函數----------------*/
status NewWord(WordType nw,Sequence cha)
{ int i,k;
if(sp.freep+cha.size>=MAXSIZE)
{ printf("Heap Full!\n");
getchar();
return(0);
}
else{
i=sp.freep;
sp.freep=sp.freep+cha.size;
for(k=0;k sp.stores[i+k]=cha.ch[k];
nw->stadr=i;
nw->len=cha.size;
return(1);
}
}
void CopyWord(WordType *nw,WordType oldw)
{ nw->stadr=oldw.stadr;
nw->len=oldw.len;
}
int WordCmp(WordType wd1,WordType wd2)
{ int k,si,sj;
(學生獨立完成)
}
void PrintWord(WordType wd)
{ int i;
for(i=0;i<wd.len;i++)
putchar(sp.stores[wd.stadr+i]);
}
/
---------------與有序表相關的函數-----------*
status MakeNode(LinkType p,ElemType e)
{ *p=(LinkType)malloc(sizeof(NodeType));
if(!(*p)) return(FALSE);
(*p)->data.stadr=e.stadr;
(*p)->data.len=e.len;
(*p)->next=NULL;
return(TRUE);
}
status InitList(OrderList *L)
{ ElemType wd;
wd.len=0;
if(MakeNode(&(L->head),wd))
{ L->tail=L->head;
L->head->next=NULL;
L->size=0;
return(TRUE);
}
else{ L->head=NULL;
return(FALSE);
}
}
void DestroyList(OrderList *L)
{ LinkType p,q;
p=L->head;
while(p){
q=p;p=p->next;
free(q);
}
L->head=L->tail=NULL;
}
status LocateElem(OrderList L,ElemType e,LinkType *q)
{ LinkType pre,p;
(學生獨立完成)
}
void InsertAfter(OrderList *L,LinkType q,LinkType s)
{ if(L->head&&q&&s){
s->next=q->next;q->next=s;
if(L->tail==q) L->tail=s;
L->size++;
}
}
void ListCompare(OrderList La,OrderList Lb,EqelemList *s)
{ int pos;
LinkType pa,pb;
if(La.head&&Lb.head){
pa=La.head->next;
pb=Lb.head->next;
s->last=pos=0;
while(pa&&pb){
if(WordCmp(pa->data,pb->data)==0){
s->eqelem[s->last++]=pos++;
pa=pa->next;
pb=pb->next;
}
else if(WordCmp(pa->data,pb->data)==-1){
pa=pa->next;
pos++;
}
else pb=pb->next;
}
}
}
status ListEmpty(OrderList L)
{ if(L.size==0) return(TRUE);
return(FALSE);
}
/
-----------與文本文件有關的函數-------------*/
int feoln(FILE f)
{ char cha;
cha=fgetc(f);
ungetc(cha,f);
if(cha=='\n') return(TRUE);
return(FALSE);
}
void GetAWord(FILE *f,Sequence *st)
{ char ch;
(學生獨立完成)
}
status ExtractWord(FILE *f,OrderList *ta)
{ int i;
char lendc;
Sequence str;
WordType nwd;
LinkType p;
LinkType s;
(學生獨立完成)
}
status match(FILE *f,OrderList pat,ResultType rs)
{ int i,k,linenum,failed,fsp;
OrderList sa;
EqelemList eqlist;
Link p;
(學生獨立完成)
}
status Initialization(FILE **fr)
{ char FileName[30];
printf("Input file name:");
do{ scanf("%s",FileName);
}while(strlen(FileName)==0);
*fr=fopen(FileName,"rb");
if(*fr)
{ printf("file open!\n");
return(TRUE);
}
else { printf("file not open!\n");
return(FALSE);
}
}
void InputWord(OrderList *pt)
{ char cc;
Sequence ws;
LinkType p,q;
WordType nwd;
(學生獨立完成)
}
void InitRList(ResultType rs,OrderList pat)
{ int k;
LinkType p;
p=pat.head->next;
for(k=0;k CopyWord(&rs[k].data,p->data);
rs[k].next=NULL;
rs[k].count=0;
p=p->next;
}
}
void OutResult(ResultType rslist,int n)
{ int i,j;
Link p;
for(i=0;i printf("The word ");
PrintWord(rslist[i].data);
printf(" appeared in the file %d times",rslist[i].cou
if(rslist[i].count!=0){
printf(" and on ");
p=rslist[i].next;
for(j=0;j if(j { printf("%d,",p->elem);
p=p->next;
}
else printf("%d\n",p->elem);
}
}
}
void FreeResult(ResultType rs,int n)
{ int i;
Link p,q;
for(i=0;i p=rs[i].next;
while(p){
q=p;
p=p->next;
free(q);
}
rs[i].next=NULL;
rs[i].count=0;
}
}
int nemu()
{ int mun;
printf("\n *
******* Literary research aid *********\n") ;
printf(" %8c1---Input matched words%9c\n",' ','');
printf(" %8c2---Input match file%13c\n",' ','');
printf(" %8c3---Proces file%17c\n",' ','');
printf(" %8c4---Output Result%15c\n",' ','');
printf(" %8c5---Quit%24c\n",' ','');
printf(" *****************************************\n");
printf("%15cSelcet 1,2,3,4,5: ",' ');
do{
mun=getch()-48;
}while(mun5);
printf("\n");
return(mun);
}
/*--------------------------------------------*/
/* 主函數 /
/
--------------------------------------------*/
void main()
{ int i,j,flag1=0,flag2=0,flag3=0;
char str[80];
FILE *fp;
OrderList pt;
LinkType p;
ResultType rs;
sp.freep=0;
pt.size=0;
for(i=0;i<MAXNUM;i++) rs[i].next=NULL;
while(1)
{ switch(nemu())
{
93
case 1: //輸入待統計的單詞集
if(pt.size!=0) DestroyList(&pt);
InputWord(&pt);
if(!ListEmpty(pt)) flag2=1;
break;
case 2: //初始化文件
if(Initialization(&fp)) flag1=1;
break;
case 3: //統計分析
if(flag1==0||flag2==0)
{ printf("file not processed!\n");
getchar();
break;
}
FreeResult(rs,pt.size);
InitRList(rs,pt);
if(!match(fp,pt,rs))
{ printf("memory overfllow!\n");
getchar();
break;
}
else flag3=1;
break;
case 4: //輸出統計結果
if(flag3==0){
printf("not result!\n");
getchar();
break;
}
OutResult(rs,pt.size);
break;
case 5: //退出系統
FreeResult(rs,pt.size);
DestroyList(&pt);
return;
}
}
}

最佳回答:


http://wenku.baidu.com/link?url=en3r9QFo5GmOLMsh_wd6P56zL6zmWYDnIv3x6GW4L5EQEwJtABy-dsAf8RH8M4BgnUJ1tGR1CIusd7nbqzP9or6CMVP51_cSz3AEseIkVWG

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved