数据结构课程设计心得体会一,课程题目(算符优先法计算算数表达式)以字符序列的形式从终端输入语法正确的、不含变量的整数表达式。利用教材表3.1(P53)给出的下面是小编为大家整理的数据结构课程设计心得体会3篇,供大家参考。
数据结构课程设计心得体会篇1
一,课程题目
(算符优先法计算算数表达式)以字符序列的形式从终端输入语法正确的、不含变量的整数表达式。利用教材表3.1(P53)给出的算符优先关系,实现对于算术四则混合运算(加、减、乘、除)表达式的求值。例如:7+(4-2)*3+12/2=19。注:按照四舍五入的方式将四则运算结果取整。
二,程序设计思想
在程序中分别设立一个运算符栈(OPTR 栈),用于存储‘+’,‘-’,‘*’,‘/’,‘#’(‘#’用于判断算术表达式结束),和一个操作数栈(OPND 栈),用于存放整数,输入算式后,先将数字与运算符分开入i栈,若为数字则先用转换函数将char类型的数转换为int型并进入操作数栈,若为运算符则根据教材表3.1(P53)给出的算符优先级关系,判断栈顶运算符和从键盘取得的运算符作优先级比较,若取得的运算符优先级高则进栈,直到取得运算符优先级低的,则将操作数取出作operate运算后存入栈顶,反复操作知道遇到‘#’,则结束运算,输出栈顶元素即为结果。 三,程序流程图
四,程序关键代码设计
本次程序设计共调用了12个方法分别是:
InitNumStack,ParseInt,PushNum,PopNum ,InitCalStack,PopCal ,PushCal,In,GetTopCal,GetTopNum,Preced,Operate。 其中
ParseInt方法
int ParseInt(char c[]){ int number[5],i; for(i=0;i
数据结构课程设计心得体会篇2
数据结构课程设计
1、 赫夫曼编码器
设计一个利用赫夫曼算法的编码和译码系统,重复地显示并处理以下项目,直到选择退出为止。 要求:
1) 将权值数据存放在数据文件(文件名为data.txt,位于执行程序的当前目录中)
2) 初始化:键盘输入字符集大小26、26个字符和26个权值(统计一篇英文文章中26个字母),建立哈夫曼树;
3) 编码:利用建好的哈夫曼树生成哈夫曼编码;
4) 输出编码(首先实现屏幕输出,然后实现文件输出); 5) 界面优化设计。
代码如下:
#include#include#include#include #define N 200
typedef struct HTNode
//结构体 { int Weight;
char ch; int Parent,Lchild,Rchild; }HTNode; typedef char * * HCode;
void Save(int n,HTNode *HT)
//把权值保存到文件 {
FILE * fp;
int i;
if((fp=fopen(“data.txt”,“wb”))==NULL)
{
printf(“cannot open filen”);
return;
}
for(i=0;inext;
pNodeScore=p1;
printf(“学号为%s的学生信息已经删除!n”,DeleteNumber);
return 0; } else
{
pNodeScore=p1->next;
while(pNodeScore!=NULL)
{
if(strcmp(pNodeScore->data.Number,DeleteNumber)==0)
{
p1->next=pNodeScore->next;
printf(“学号为%s的学生信息已经删除!n”,DeleteNumber);
return 0;
}
else
{ //否则,结点向下一个,p1仍为pNodeScore的前驱
p1=pNodeScore;
pNodeScore=pNodeScore->next;
}
} } printf(“没有此学号的学生!”); } int Change() {
p_node_score pNodeScore;
pNodeScore=headScore; if(pNodeScore==NULL) {
printf(“成绩表中没有数据!请先添加数据!n”);
return 0; } char EditNumber[20]; printf(“请输入你要修改的学生学号:”); scanf(“%s”,EditNumber); while(pNodeScore!=NULL) {
if(strcmp(pNodeScore->data.Number,EditNumber)==0)
{ //用strcmp比较两字符串是否相等,相等则返回0
printf(“原来的学生成绩信息如下:n”); //输出原来的成绩信息
printf(“
学号
|
姓名
| 语文成绩
| 英语成绩| 高数成绩n”);
PrintScore(pNodeScore->data);
printf(“语文新成绩:”);
scanf(“%s”,pNodeScore->data.Chinese);
printf(“英语新成绩:”);
scanf(“%s”,pNodeScore->;
printf(“高数新成绩:”);
scanf(“%s”,pNodeScore->data.Math);
printf(“成绩已经修改!”);
return 0;
}
pNodeScore=pNodeScore->next; //如果不相等,pNodeScore则指向下一个结点
} printf(“没有此学号的学生!n”); //如果找到最后都没有,则输出没有此学号的学生
} int Find() {
p_node_score pNodeScore;
pNodeScore=headScore; if(pNodeScore==NULL) {
printf(“成绩表中没有数据!请先添加数据!n”);
return 0; } char FindNumber[20]; printf(“请输入你要查找的学生学号:”); scanf(“%s”,FindNumber); while(pNodeScore!=NULL) {
if(strcmp(pNodeScore->data.Number,FindNumber)==0)
{
printf(“你要查找的学生成绩信息如下:n”);
printf(“
学号
|
姓名
| 语文成绩
| 英语成绩| 高数成绩n”);
PrintScore(pNodeScore->data);
return 0;
}
pNodeScore=pNodeScore->next; } printf(“没有此学号的学生!n”); } int main()
//主函数 { int choice=0; headScore=NULL; int c; do {
system(“color 2f”);
//运行环境背景颜色。
printf(“nntt*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=ntt”);
printf(“nttt 学生成绩管理系统 ttt”);
printf(“nntt*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=ntt”);
printf(“nttt1.输入成绩信息nttt2.输出成绩信息nttt3.添加成绩信息nttt”);
printf(“4.修改成绩信息nttt5.删除成绩信息nttt6.查询成绩信息nttt7.退出”);
printf(“nnttt请选择:”);
scanf(“%d”,&c);
switch(c)
{
case 1:system(“cls”);Input();break;
case 2:system(“cls”);View();break;
case 3:system(“cls”);Add();break;
case 4:system(“cls”);Change();break;
case 5:system(“cls”);Delete();break;
case 6:system(“cls”);Find();break;
case 7:system(“cls”);exit(0);
}
}while(1); return 0; }
运行界面如下:
数据结构课程设计心得体会篇3
《数据结构》
课程设计报告
学 号 姓 名 班 级 指导教师
XXX XXX XXX XXX 安徽工业大学计算机学院
2014年6月
利用栈实现迷宫问题的求解
一、问题描述
以一个M*N的长方阵表示迷宫,0和1分别表示迷宫中的通路和墙壁。设计一个程序,对任意设定的迷宫,求出一条从入口到出口的通路,或得出米有通路的结论。
二、设计思路
(1)以二维数组maze[m][n]表示迷宫,数组中元素值为0表示通路,1表示障碍。
(2)其中迷宫的入口位置和出口位置默认于maze数组的起始元素位置和最后个元素位置。
(3)以链表作存储结构的栈类型,实现求解迷宫的非递归程序。
三、数据结构定义 typedef struct{
int x; int y; }item; typedef struct{ int x,y,d; }DataType; typedef struct{ DataType data[1000]; int top; }SeqStack,*PSeqStack;
typedef struct{ DataType data[1000]; int top; }SeqStack,*PSeqStack;
四、程序清单 #include#include#include#define m 6 #define n 8 int maze[m+2][n+2]={{1,1,1,1,1,1,1,1,1,1},
typedef struct{
{1,0,1,1,1,0,1,1,1,1}, {1,0,0,0,0,1,1,1,1,1}, {1,0,1,0,0,0,0,0,1,1}, {1,0,1,1,1,0,0,1,1,1}, {1,1,0,0,1,1,0,0,0,1}, {1,0,1,1,0,0,1,1,0,1}, {1,1,1,1,1,1,1,1,1,1}}; int x; int y; }item;
item move[4]={{0,1},{1,0},{0,-1},{-1,0}};
typedef struct{ int x,y,d; }DataType;
typedef struct{ DataType data[1000]; int top; }SeqStack,*PSeqStack;
PSeqStack Init_SeqStack() {
} PSeqStack p; p=(PSeqStack)malloc(sizeof(SeqStack)); if(p) p->top=-1; return p;
int Empty_SeqStack(PSeqStack p) {
}
int Push_SeqStack(PSeqStack p,DataType x) {
}
int Pop_SeqStack(PSeqStack p,DataType *x) { if(p->top==999) return 0; if(p->top==-1) return 1; else return 0; else {
} p->top++; p->data[p->top]=x; return 1;
} if(Empty_SeqStack(p)) return 0; else {
} *x=p->data[p->top]; p->top--; return 1; void Destroy_SeqStack(PSeqStack *p) {
}
int mazepath(int maze[][n+2],item move[],int x0,int y0) {
PSeqStack S; DataType temp; int x,y,d,i,j; if(*p) free(*p); *p=NULL; return;
temp.x=x0; temp.y=y0; temp.d=-1; S=Init_SeqStack(); if(!S) {
} Push_SeqStack(S,temp); while(!Empty_SeqStack(S)) {
Pop_SeqStack(S,&temp); x=temp.x; y=temp.y; d=temp.d+1; while(d
推荐访问:数据结构 心得体会 课程设计 数据结构课程设计心得体会800字 数据结构课程设计心得体会200字 数据结构课程设计心得体会和总结 数据结构课程设计心得体会300字 数据结构课程设计心得体会1000字 数据结构课程设计心得体会总结 数据结构课程设计心得体会怎么写 数据结构课程设计心得体会范文 数据结构课程设计心得体会通用