数据结构课程设计心得体会3篇(全文完整)

时间:2024-01-09 19:16:01 浏览量:

数据结构课程设计心得体会一,课程题目(算符优先法计算算数表达式)以字符序列的形式从终端输入语法正确的、不含变量的整数表达式。利用教材表3.1(P53)给出的下面是小编为大家整理的数据结构课程设计心得体会3篇,供大家参考。

数据结构课程设计心得体会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字 数据结构课程设计心得体会总结 数据结构课程设计心得体会怎么写 数据结构课程设计心得体会范文 数据结构课程设计心得体会通用