高分 数据库课程设计报告

2024-12-17 02:48:21
推荐回答(1个)
回答1:

文本编译

一、实验名称 A Text Editor Imlementation

二、实验的目的和要求:

1.采用C++的ASCII码文件和串函数实现;

2.熟练掌握串运算的应用;

3.熟练掌握计算机系统的基本操作方法,了解如何编辑、编译、链接和运行一个C++程序;

4.上机调试程序,掌握查错、排错使程序能正确运行。

三、实验的环境:指硬件和软件环境

1.硬件环境: CPU CENTRINO, HARDISK 30GB, 256DDR

2.软件环环境:windows XP, Microsoft Visual C++ 6.0。

四、算法描述

该程序主要运用了链表与数组来处理字符串的各项操作。如插入,删除,查找,替换,显示等等。对于自定义的文本”str.txt”,其每一行表示一个结点用单链表来实现,可以进行一行的修改,删除,添加等;每一行中的字符可用一够数组来存储,这样可以利用数组的特性方便地进行插入,删除,替换,甚至可以进行排序操作!数组的各项操作比较简单,下面我举一个链表的删除操作:如果要删除链表中的第i个结点,应当先让第i-1个结点的link域指针指向第i+1个结点,通过重新拉链,把第i个结点从链表中分离出来,然后再删除它。

五、源程序清单

#include "stdio.h"

#include "stdlib.h"

#define OK 1

#define ERROR 0

#define OVERFLOW -1

//#define EOF -1

#define STACK_INIT_SIZE 10

#define STACKINCREMENT 1000

#define MAXQSIZE 10

static int i=0;

typedef char ElemType;

typedef struct StackNode//构造栈

{

ElemType *base;

ElemType *top;

int stacksize;

}SqStack;

ElemType InitStack(SqStack *S)//初始化栈

{

S->base=(ElemType *)malloc(STACK_INIT_SIZE*sizeof(ElemType));

if(!S->base)

{

exit(OVERFLOW);

}

S->top=S->base;

S->stacksize=STACK_INIT_SIZE;

return OK;

}

ElemType StackEmpty(SqStack *S)//判断栈是否为空

{

if(S->top==S->base)

return OK;

else

return ERROR;

}

ElemType Push(SqStack *S,ElemType e)//进栈操作

{

if(S->top-S->base>=S->stacksize)

{

S->base = (ElemType *)realloc(S->base,(S->stacksize+STACKINCREMENT)*sizeof(ElemType));

if(!S->base)

{

exit(OVERFLOW);

}

S->top = S->base+S->stacksize;

S->stacksize+=STACKINCREMENT;

}

*S->top++=e;

return OK;

}

ElemType Pop(SqStack *S,ElemType *e)//出栈操作

{

if(S->top==S->base)

{

return ERROR;

}

*e=*--S->top;

//printf("%d\n",e);

// return e;

return 0;

}

void ClearStack(SqStack *S)//清空栈

{

S->top=S->base;

}

ElemType LineEdit(SqStack *S )//文本编译

{

char ch, e, a[30];

int i ;

ch = getchar();

while(1)

{

while (ch!='\n')

{

switch(ch)

{

case '#':

Pop(S,&e);

break;

case '@':

ClearStack(S);

break;

default:

Push(S,ch);

break;

}

ch = getchar();

}

i = 0;

while (!StackEmpty(S))

{

Pop(S,&e);

a[i++]=e;

}

for(--i; i>= 0; i--)

{

printf("%c",a[i]);

}

printf("\n");

ClearStack(S);

ch = getchar();

}

return 0;

}

int main(void)

{

SqStack S;

InitStack(&S);

LineEdit(&S);

system("pause");

return 0;

}