高分数据库课程设计报告
首先,实验的名称是文本编辑器模拟。
二、实验的目的和要求:
1.使用C++ ASCII码文件和字符串函数;
2.熟练掌握字符串运算的应用;
3.掌握计算机系统的基本操作方法,知道如何编辑、编译、链接和运行一个C++程序;
4.在电脑上调试程序,掌握错误检查和调试,使程序能正确运行。
三、实验环境:指硬件和软件环境。
1.硬件环境:CPU迅驰,HARDISK 30GB,256DDR。
2.软件环境:Windows XP,微软Visual C++6.0。
四、算法描述
这个程序主要利用链表和数组来处理字符串的各种操作。如插入、删除、查找、替换、显示等。对于自定义文本“str.txt”,每行代表一个节点,可以修改、删除、添加等。每行的字符都可以存储在一个数组中,利用数组的特性可以方便地对其进行插入、删除、替换甚至排序!阵列的操作相对简单。我举一个删除链表的例子:如果要删除链表中的第I个节点,首先要将i-1节点的链接域指针指向i+1节点,然后通过重新拉链的方式将第I个节点从链表中分离出来,然后再删除。
动词 (verb的缩写)源程序列表
#包含“stdio.h”
#包含" stdlib.h "
#定义OK 1
#定义错误0
#定义溢出-1
//#定义EOF -1
#define STACK_INIT_SIZE 10
#定义堆栈增量1000
#定义MAXQSIZE 10
静态int I = 0;
typedef char ElemType
Typedef结构堆栈节点//构造堆栈
{
ElemType * base
ElemType * top
int stacksize
} SqStack
ElemType InitStack(SqStack *S)//初始化堆栈
{
s-& gt;base =(elem type *)malloc(STACK _ INIT _ SIZE * sizeof(elem type));
如果(!s-& gt;基地)
{
退出(溢出);
}
s-& gt;top = S-& gt;基地;
s-& gt;stacksize = STACK _ INIT _ SIZE
退货OK;
}
elem type stack empty(sq stack * s)//确定堆栈是否为空。
{
if(S-& gt;top = = S-& gt;基地)
退货OK;
其他
返回错误;
}
Elemtype push (sqstack * s,elem type e)//堆栈操作
{
if(S-& gt;top-S-& gt;base & gt= S-& gt;堆栈大小)
{
s-& gt;base =(elem type *)realloc(S-& gt;基地,(S->;stack size+stack increment)* sizeof(elem type));
如果(!s-& gt;基地)
{
退出(溢出);
}
s-& gt;top = S-& gt;base+S-& gt;stacksize
s-& gt;stack size+= stack increment;
}
* S->;top++ = e;
退货OK;
}
Elemtype pop (sqstack * s,elemtype * e)//pop操作
{
if(S-& gt;top = = S-& gt;基地)
{
返回错误;
}
* e = *-S-& gt;顶;
//printf("%d\n ",e);
//返回e;
返回0;
}
Void ClearStack(SqStack *S)//清空堆栈。
{
s-& gt;top = S-& gt;基地;
}
ElemType LineEdit(SqStack *S )//文本编译
{
char ch,e,a[30];
int I;
ch = getchar();
while(1)
{
而(ch!='\n ')
{
开关(通道)
{
案例' # ':
流行音乐。e);
打破;
案例“@”:
ClearStack
打破;
默认值:
Push(S,ch);
打破;
}
ch = getchar();
}
I = 0;
而(!栈顶)
{
流行音乐。e);
a[i++]= e;
}
for(-I;我& gt= 0;我-)
{
printf("%c ",a[I]);
}
printf(" \ n ");
ClearStack
ch = getchar();
}
返回0;
}
int main(void)
{
sq stack S;
init stack(& amp;s);
LineEdit(& amp;s);
系统(“暂停”);
返回0;
}