数据结构C语言版课程设计
一、问题描述:
利用哈夫曼编码进行信息通信可以大大提高信道利用率,缩短信息传输时间,降低传输成本。但是,这要求在发送端通过一个编码系统对待传数据预先编码,在接收端将传来的数据进行译码(复原)。对于双工信道(即可以双向传输信息的信道),每端都需要一个完整的编/译码系统。试为这样的信息收发站写一个哈夫曼码的编/译码系统。
二、基本要求:
1、I:初始化(Initialization),从终端读入字符集大小n,以及n个字符和n个权值,建立哈夫曼树,并将它存于文件hfmTree中。
2、E:编码(Encoding),利用已建好的哈夫曼树(如不在内存,则从文件hfmTree中读人),对文件ToBeTran中的正文进行编码,然后将结果存入文件CodeFile中。
3、D:译码(Decoding),利用已建好的哈夫曼树将文件CodeFile中的代码进行译码,结果存入文件TextFile中。
4、P:输出代码文件(Print),将文件CodeFile以紧凑格式显示在终端上,每行50个代码。同时将此字符形式的编码文件写入文件CodePrin中。
5、T:输出哈夫曼树(TreePrinting),将已在内存中的哈夫曼树以直观的方式(树或凹人表形式)显示在终端上,同时将此字符形式的哈夫曼树写入文件TreePrint中。
三、测试数据:]
用下表给出的字符集和频度的实际统计数据建立哈夫曼树,并实现以下报文的编码和译码:“THIS PROGRAM IS MY FAVORITE”。
字符 A B C D E F G H I J K L M
频度 186 64 13 22 32 103 21 15 47 1 5 32 20 20
字符 N O P Q R S T U V W X Y Z
频度 57 63 15 1 48 51 80 23 8 18 1 16 1
四、实现提示:
1、哈夫曼编码采用一个字符串数组存储。
2、用户界面可以设计为“菜单”方式:显示上述功能符号,再加上“Q”,表示退出运行Quit。请用户键入一个选择功能符。此功能执行完毕后再显示此菜单,直至某次用户选择了“Q”为止。
3、在程序的一次执行过程中,第一次执行I、D或C命令之后,哈夫曼树已经在内存了,不必再读入。每次执行中不一定执行I命令,因为文件hfmTree可能早已建好。
#include
#include
#include
#include
int n;
struct node{
int w;
int flag;
char c;
struct node *plink,*llink,*rlink;
char code[50];
}*num[100],*root;
FILE *fp;
char tmpcode[50];
int t=0;
void main(void)
{
int i;
void settree(void); //建立树
void code(void); //对文件编码
void decode(void); // 译码
void disp(void);
root=(struct node*)malloc(sizeof(struct node));
puts("*******************哈夫曼编/译码器演示******************************");
while(1){
start:
puts("1. 初始化 2. 编码 3. 译码 4.显示编码表 5. 退出");
while(scanf("%d",&i)!=1)
{
while(getchar()!='
')
continue;
puts("输入错误!");
puts("请重新输入!");
puts("1. 初始化 2. 编码 3. 译码 4.显示编码表 5. 退出");
}
switch (i)
{
case 1:
settree();
break;
case 2:
code();
break;
case 3:
decode();
break;
case 4:
disp();
break;
case 5:
exit(0);
default:
puts("输入错误!");
puts("请重新输入!");
goto start;
}
}
}
void settree(void)
{
int i,j,k;
struct node *p1,*p2,*tmp,*p;
void go(struct node *);
void setcode(struct node *);//建立每一个字符的编码
void printtree(struct node *);
puts("输入字符集的大小:");
scanf("%d",&n);
while(getchar()!='
')
continue;
for(i=0;i<n;i++)
{
p=(struct node *)malloc(sizeof(struct node));
puts("请输入一个字符");
scanf("%c",&p->c);
while(getchar()!='
')
continue;
puts("请输入该字符的权值:");
scanf("%d",&p->w);
while(getchar()!='
')
continue;
p->plink=NULL;
p->rlink=NULL;
p->llink=NULL;
num[i]=p;
}
for(i=0;i<n-1;i++) //(递增)排序
{
for(j=i+1;j<n;j++)
{
if(num[i]->w>num[j]->w)
{
tmp=num[i];
num[i]=num[j];
num[j]=tmp;
}
}
}
/*******************************开始建立树***********************/
num[n]=NULL; //结束标志
k=n;
while(num[1]!=NULL)
{
p=(struct node *)malloc(sizeof(struct node));
p1=num[0];
p2=num[1];
p->llink=p1;
p->rlink=p2;
p->plink=NULL;
p1->plink=p;
p2->plink=p;
p->w=p1->w+p2->w;
for(i=1;i<k;i++)
{
num[i]=num[i+1];
}
k--;
num[0]=p;
for(i=0;i<k-1;i++) //排序
{
for(j=i+1;j<k;j++)
{
if(num[i]->w>num[j]->w)
{
tmp=num[i];
num[i]=num[j];
num[j]=tmp;
}
}
}
}
root=num[0];
/*建立完毕*/
/*写入文件,前序*/
if((fp=fopen("c:\\hfmtree.wxl","wb"))==NULL)
{
puts("文件打开错误!");
getchar();
exit(0);
}
setcode(root);
go(root);
fclose(fp);
}
void setcode(struct node *p)
{
if(p->llink==NULL&&p->rlink==NULL)
{
tmpcode[t]='\0';
strcpy(p->code,tmpcode);
}
else
{
tmpcode[t++]='0';
setcode(p->llink);
t--;
tmpcode[t++]='1';
setcode(p->rlink);
t--;
}
}
void go(struct node *p)
{
if(p->llink==NULL&&p->rlink==NULL)
{
fputc('(',fp);
fputc(p->c,fp);
fputs(p->code,fp);
fputc(')',fp);
}
else
{
go(p->llink);
go(p->rlink);
}
}
void code(void)
{
FILE *fp1,*fp2,*fp3;
char ch1,ch2,c;
if((fp1=fopen("c:\\hfmtree.wxl","rb"))==NULL)
{
puts("文件打开错误!");
getchar();
exit(0);
}
if((fp2=fopen("c:\obetrans.txt","wb"))==NULL)
{
puts("文件打开错误!");
getchar();
exit(0);
}
if((fp3=fopen("c:\\codefile.wxl","wb"))==NULL)
{
puts("文件打开错误!");
getchar();
exit(0);
}
while((ch1=fgetc(fp2))!=EOF)
{
t=0;
while((ch2=fgetc(fp1))!=EOF)
{
if(ch1==ch2)
{
while((c=fgetc(fp1))!=')')
{
tmpcode[t++]=c;
}
tmpcode[t]='\0';
fputs(tmpcode,fp3);
fputc('@',fp3);
rewind(fp1);
break;
}
}
}
fclose(fp1);
fclose(fp2);
fclose(fp3);
}
void decode(void)
{
FILE *fp1,*fp2,*fp3;
char ch1,ch2,ch3;
char temp_3[20];
char temp_1[20];
int t1,t3;
if((fp1=fopen("c:\\hfmtree.wxl","rb"))==NULL)
{
puts("文件打开错误!");
getchar();
exit(0);
}
if((fp2=fopen("c:\extfile.txt","wb"))==NULL)
{
puts("文件打开错误!");
getchar();
exit(0);
}
if((fp3=fopen("c:\\codefile.wxl","rb"))==NULL)
{
puts("文件打开错误!");
getchar();
exit(0);
}
while((ch3=fgetc(fp3))!=EOF)
{
t3=0;
while(ch3!='@')
{
temp_3[t3++]=ch3;
ch3=fgetc(fp3);
}
temp_3[t3]='\0';
while((ch1=fgetc(fp1))!=EOF)
{
if(isalpha(ch1))
{
ch2=ch1;
t1=0;
while((ch1=fgetc(fp1))!=')')
{
temp_1[t1++]=ch1;
}
temp_1[t1]='\0';
if(strcmp(temp_1,temp_3)==0)
{
fputc(ch2,fp2);
rewind(fp1);
break;
}
}
}
}
fclose(fp1);
fclose(fp2);
fclose(fp3);
}
void disp(void)
{
FILE *fp1,*fp2;
char ch1,ch2;
char tmp[20];
int t;
if((fp1=fopen("c:\\hfmtree.wxl","rb"))==NULL)
{
puts("文件打开错误!");
getchar();
exit(0);
}
if((fp2=fopen("c:\\hfmcode.txt","wb"))==NULL)
{
puts("文件打开错误!");
getchar();
exit(0);
}
while((ch1=fgetc(fp1))!=EOF)
{
if(ch1=='(')
{
t=0;
ch1=fgetc(fp1);
ch2=ch1;
while((ch1=fgetc(fp1))!=')')
{
tmp[t++]=ch1;
}
tmp[t]='\0';
printf("%c-----%s
",ch2,tmp);
fputc(ch2,fp2);
fputc('-',fp2);
fputc('-',fp2);
fputc('-',fp2);
fputs(tmp,fp2);
fputc('
',fp2);
}
}
fclose(fp1);
fclose(fp2);
}
《数据结构课程精讲教案合集-复旦大学(共计1061页).pdf 》百度网盘免费资源下载
链接: https://pan.baidu.com/s/15uwjtHgKKzZdheWFQC21pQ
?pwd=abzc 提取码: abzc
/*
创建多项式A:
系数 幂次(0 0结束) : 1 0
系数 幂次(0 0结束) : 2 1
系数 幂次(0 0结束) : 3 2
系数 幂次(0 0结束) : 0 0
A(x) = 3.00x^2 + 2.00x + 1.00
创建多项式B:
系数 幂次(0 0结束) : 1 4
系数 幂次(0 0结束) : -3 2
系数 幂次(0 0结束) : 1 1
系数 幂次(0 0结束) : -2 0
系数 幂次(0 0结束) : 0 0
B(x) = 1.00x^4 - 3.00x^2 + 1.00x - 2.00
C(x) = 3.00x^6 + 2.00x^5 - 8.00x^4 - 3.00x^3 - 7.00x^2 - 3.00x - 2.00
A(2.00) = 17.0000
B(2.00) = 4.0000
C(2.00) = 68.0000
Press any key to continue
*/
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define EPS 1E-6
typedef struct item {
double coefficient;
int power;
struct item *next;
} *POLYNOMIAL,*NODE;
POLYNOMIAL Create() { // 创建多项式
NODE head,p;
double coe;
int pwr;
head = p = (NODE)malloc(sizeof(item));
while(1) {
printf("系数 幂次(0 0结束) : ");
scanf("%lf%d",&coe,&pwr);
if(coe == 0.0 && pwr == 0) break;
p->next = (NODE)malloc(sizeof(item));
p->next->coefficient = coe;
p->next->power = pwr;
p = p->next;
}
p->next = NULL;
return head;
}
void Sort(POLYNOMIAL head) { // 按幂次降排序
NODE pt,q,p = head;
while(p->next) {
q = p->next;
while(q->next) {
if(p->next->power < q->next->power) {
pt = p->next;
p->next = q->next;
q->next = p->next->next;
p->next->next = pt;
}
else q = q->next;
}
p = p->next;
}
}
void Show(POLYNOMIAL head) { // 显示多项式
POLYNOMIAL p = head->next;
int flag = 1;
if(p == NULL) return;
while(p) {
if(flag) {
if(fabs(p->coefficient) >= EPS) {
if(p->power == 0) printf("%.2lf ",p->coefficient);
else if(p->power == 1) printf("%.2lfx ",p->coefficient);
else printf("%.2lfx^%d ",p->coefficient,p->power);
}
flag = 0;
}
else if(p->coefficient > 0) {
if(p->power == 0) printf("+ %.2lf ",p->coefficient);
else if(p->power == 1) printf("+ %.2lfx ",p->coefficient);
else printf("+ %.2lfx^%d ",p->coefficient,p->power);
}
else {
if(p->power == 0) printf("- %.2lf ",-p->coefficient);
else if(p->power == 1) printf("- %.2lfx ",-p->coefficient);
else printf("- %.2lfx^%d ",-p->coefficient,p->power);
}
p = p->next;
}
printf("
");
}
double Power(double x,int n) {
double value = 1.0;
int i;
for(i = 1; i <= n; ++i) value *= x;
return value;
}
double Value(POLYNOMIAL head,double x) { // 多项式求值
POLYNOMIAL p;
double value = 0.0;
for(p = head->next; p; p = p->next)
value += p->coefficient * Power(x,p->power);
return value;
}
POLYNOMIAL Mult(POLYNOMIAL A, POLYNOMIAL B) { // 多项式相乘
POLYNOMIAL head,t,p,q;
head = t = (NODE)malloc(sizeof(item));
for(p = A->next; p; p = p->next) { // 完成相乘过程
for(q = B->next; q; q = q->next) {
t->next = (NODE)malloc(sizeof(item));
t->next->coefficient = p->coefficient * q->coefficient;
t->next->power = p->power + q->power;
t = t->next;
}
}
t->next = NULL;
Sort(head); // 排序
p = head;
while(p->next) { // 合并同类项
q = p->next;
while(q->next) {
if(p->next->power == q->next->power) {
p->next->coefficient += q->next->coefficient;
t = q->next;
q->next = t->next;
free(t);
}
else q = q->next;
}
p = p->next;
}
return head;
}
void FreeMemory(POLYNOMIAL head) {
POLYNOMIAL q,p = head;
while(p) {
q = p;
p = q->next;
free(q);
}
}
int main() {
printf("创建多项式A:
");
POLYNOMIAL A = Create();
Sort(A);
printf("A(x) = ");Show(A);
printf("创建多项式B:
");
POLYNOMIAL B = Create();
Sort(B);
printf("B(x) = ");Show(B);
POLYNOMIAL C = Mult(A,B);
printf("C(x) = ");Show(C);
printf("A(%.2lf) = %.4lf
",2.0,Value(A,2.0));
printf("B(%.2lf) = %.4lf
",2.0,Value(B,2.0));
printf("C(%.2lf) = %.4lf
",2.0,Value(C,2.0));
FreeMemory(A);
FreeMemory(B);
FreeMemory(C);
return 0;
}
主要函数思想:
初始化一元多项式A
初始化一元多项式B
初始化一元多项式C
给一元多项式A赋入数据
给一元多项式B赋入数据(指数升序)
把AB各项累乘放入C中
用双指针的模式消除合并累加最后得到结果
输出
*/
//---------头文件----------
#include<stdio.h>
#include<stdlib.h>
//---------宏定义----------
#define TRUE 1
#define ERROR 0
#define OVERFLOW -2
//---------结构体和替换--------
typedef int Bool;
typedef struct Node
{
float coef;
int expn;
struct Node *prior,*next;
}Poly,*Polynomial;
//------函数-------
Bool InitPolynomial(Polynomial f);
Bool InputData(Polynomial f);
void Multiply(Polynomial f1,Polynomial f2,Polynomial f3);
void Add(Polynomial f3);
void OutputData(Polynomial f3);
//-----------主函数------------
void main()
{
Poly A,B,C,*f1=&A,*f2=&B,*f3=&C;
InitPolynomial(f1);InitPolynomial(f2);InitPolynomial(f3);
InputData(f1);InputData(f2);
Multiply(f1,f2,f3);
Add(f3);
OutputData(f3);
}
//---------其余函数---------
Bool InitPolynomial(Polynomial f)
{
if(!(f=(Polynomial)malloc(sizeof(Poly))))
{
exit(OVERFLOW);
}
f->next=NULL;
f->prior=NULL;
return TRUE;
}
Bool InputData(Polynomial f)
{
Polynomial StartNode=f,TempNode=f,NewNode;
int n;
printf("输入多项式的项数:");
do
{
scanf("%d",&n);
if(n<0)
{
printf("输入项数错误!重新输入!");
}
}while(n<0);
printf("按升序输入一元多项式的系数和指数:\n");
for(;n>0;n--)
{
if(!(NewNode=(Polynomial)malloc(sizeof(Poly))))
{
exit(OVERFLOW);
}
scanf("%f%d",&NewNode->coef,&NewNode->expn);
TempNode->next=NewNode;
NewNode->prior=TempNode;
NewNode->next=NULL;
TempNode=NewNode;
}
f=StartNode;
return TRUE;
}
void Multiply(Polynomial f1,Polynomial f2,Polynomial f3)
{
Polynomial StartNode=f3,TempNode=f3,NewNode,Point1=f1->next,Point2;
while(Point1)
{
Point2=f2->next;
for(;Point2;Point2=Point2->next)
{
if(!(NewNode=(Polynomial)malloc(sizeof(Poly))))
{
exit(OVERFLOW);
}
NewNode->coef=Point1->coef*Point2->coef;
NewNode->expn=Point1->expn+Point2->expn;
TempNode->next=NewNode;
NewNode->prior=TempNode;
NewNode->next=NULL;
TempNode=NewNode;
}
Point1=Point1->next;
}
f3=StartNode;
}
void Add(Polynomial f3)
{
Polynomial Point1=f3->next,Point2,StartNode=f3,Temp;
while(Point1)
{
for(Point2=Point1->next;Point2;)
{
if(Point1->expn==Point2->expn)
{
Point1->coef+=Point2->coef;
Temp=Point2;
Point2=Point2->next;
Temp->prior->next=Temp->next;
Temp->next->prior=Temp->prior;
//DeleteNode(f3,i);
}
else
{
Point2=Point2->next;
}
}
if(0==Point1->coef)
{
Temp=Point1;
Point1=Point1->next;
Temp->prior->next=Temp->next;
Temp->next->prior=Temp->prior;
}
else
{
Point1=Point1->next;
}
}
f3=StartNode;
}
void OutputData(Polynomial f3)
{
f3=f3->next;
printf("f(x)=");
while(f3)
{
if(f3->expn)
{
printf("%.0fx^%d",f3->coef,f3->expn); //这里数据为了好看为.0格式,其实不应该要的,因为是浮点型数据,而这里的浮点型恰好不为小数。
}
else
{
printf("%.0f",f3->coef);
}
f3=f3->next;
if(f3&&f3->coef>0)
{
printf("+");
}
}
getchar();
getchar();
}
这个有点意思,先mark再发代码。
zhe taitaiatiiojdiv
跪求数据结构课程设计(C语言版)代码,感激不尽
链接: https:\/\/pan.baidu.com\/s\/15uwjtHgKKzZdheWFQC21pQ ?pwd=abzc 提取码: abzc
用数据结构(c语言版)编写的学生选课系统
else printf("无该编号的课程!\\n"); end:; } void managementc()\/\/课程管理主函数 { struct couse * incouse; int i,num1; printf("\\t\\t\\t课程管理\\n"); printf("1.新增课程\\n"); printf("2.删除课程\\n"); printf("3.返回主菜单\\n"); printf("请选择(1~3):\\n"); scanf("%d",&i)...
数据结构 课程设计C语言版 本人现..跪求一道课程设计答案 有哪..位的...
cprintf("%s",f[i]); \/*输出菜单项*\/ c=i-1; \/*给代表菜单选项的整数赋值*\/ } textbackground(BLACK); \/*设置背景颜色为黑色*\/ window(1,1,80,25); \/*恢复原窗口大小*\/ return c; \/*返回代表菜单选项的整数值*\/}\/*初始化函数*\/void init(){ First=NULL; Last=NULL;}\/*输入数据,创建双链...
算法与数据结构:C语言描述内容简介
《算法与数据结构:C语言描述(第2版)》注重知识模块的独立性和关联性,适应不同专业和学生水平的需求。无论是计算机专业的本科生,还是理工科相关专业的本科和计算机专科学生,都可以根据自身需要灵活选择和利用教材内容,作为“数据结构”课程的学习资料,或是学习相关课程的重要参考书。
c语言 数据结构课程设计 图书管理系统
2017-05-30 c语言数据结构课程设计 顺序表源码 2013-01-08 数据结构课程设计(c语言版)文本文件单词的检索与计数 6 2008-01-31 数据结构课程设计(C语言) 2019-01-11 跪求数据结构课程设计(C语言版)代码,感激不尽 2016-05-16 C语言数据结构 图书管理借阅系统,主要分为两大功能 更多类似问题 > 为...
急求求大仙帮忙!C语言数据结构课程设计,关于旅游图。
以(Vi,Vj ,d)的形式从键盘输入建立该旅游区的旅游景点图,其中:Vi和Vj表示两个不同的旅游景点,d表示这两个景点之间的道路距离;该旅游景点图采用邻接矩阵存储结构。实现要求:⑴ 旅游景点图的输出:分别以邻接矩阵、邻接链表的方式输出该旅游景点图。⑵ 相邻景点查询:假设对于每个景点,设置有简易的信息查询,要求能给...
数据结构课程设计,有向图,C语言高手进
struct node \/* 图顶点结构定义 *\/ { int vertex; \/* 顶点数据信息 *\/ struct node *nextnode; \/* 指下一顶点的指标 *\/ };typedef struct node *graph; \/* 图形的结构新型态 *\/ struct node head[9]; \/* 图形顶点数组 更改为实际大小*\/ int visited[9]; \/* 遍历标记数组 更改为实际...
数据结构c语言版严蔚敏2007年是第几版
第三版。根据查询当当网信息显示,2007年《数据结构(C语言版)》是严蔚敏编写的第三版,05版和07版相对于第二版进行了一些修订和更新,主要包括:对错误和笔误进行了勘误和修正;对某些概念和算法进行了进一步解释和补充;在部分章节中增加了习题和解答等。
帮忙数据结构课程设计代码(C语言)
include <stdio.h> include <stdlib.h> struct node \/*结点的数据结构*\/ { int a;} ;struct Stack \/*栈的结构*\/ { struct node *A;int tos;int size;};init(struct Stack *S,int size) \/*栈的初始化*\/ { S->A=(struct node *)malloc(sizeof(struct node)*size);if(...
严蔚敏 的 《数据结构(C语言版)》 这本书在豆瓣评分为什么不高?_百度...
严蔚敏的《数据结构(C语言版)》这本书在豆瓣评分挺高的。数据结构(C语言版)的具体内容:数据结构分为8类有:数组、栈、队列、链表、树、散列表、堆、图。数据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成 。1、数组 数组是可以再内存中连续存储多个元素的...
田颜君然: 我这个和你要的差不多吧,,我做实验用的..笔视收费#include <iostream> #include <string.h> #include <string> //字符串操作 #include <iomanip> using namespace std; #define N 50 //学生数 #define M 10 //课程数 struct student { char name[20];...
红星区18013118491: 求一个<哈夫曼编码>数据结构课程设计(C语言版) - ?
田颜君然: 我帮你测试了,这个可以满足你的要求! #include #include #define max 50 struct a { int weight; int parent,lchild,rchild; }; struct b { char cd[max]; int start; }; void main() { struct a ht[2*max]; struct b hcd[max],d; int i,k,n,c,s1,s2,m1,m2,f; printf("输入n:"); scanf("%d",&n); for(i=1;i
红星区18013118491: 数据结构(C语言版)课程设计大作业,急!!! - ?
田颜君然: 以数组模拟卡片 TRUE向上 FALSE向下 循环模拟翻卡片 满足条件 card[i]=!card[i]; 最后输出值为TRUE的数组元素 #include <stdio.h> #include <string.h> int main() { bool card[52]; memset(card,true,52); for (int i=2,n=1;i<=52;i++,n++) { for(int j=n;...
红星区18013118491: c语言版数据结构课程设计利用栈求表达式的值,加减乘除,带括弧的混合运算. - ?
田颜君然: 跟你的要求符合#include "stdio.h"#include "string.h"#include "stdlib.h"#define MAXLEN 100 typedef struct { char op; int level; }opt; typedef struct //定义操作符栈 { opt st[MAXLEN]; int top; }op_stack; typedef struct //定义值栈 { double D[...
红星区18013118491: 数据结构c语言版的 课程设计 - ?
田颜君然: 一、问题描述: 利用哈夫曼编码进行信息通信可以大大提高信道利用率,缩短信息传输时间,降低传输成本.但是,这要求在发送端通过一个编码系统对待传数据预先编码,在接收端将传来的数据进行译码(复原).对于双工信道(即可以双向...
红星区18013118491: 数据结构课程设计——航空订票系统(C语言) - ?
田颜君然: 1、任务:航空客运定票的业务活动包括:查询航线、客票预定和办理退票等.试设计一个航空客运定票系统,以使上述业务可以借助计算机来完成.2、功能要求:1) 录入:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具 ...
红星区18013118491: 数据结构课程设计(C版语言)二叉排序树算法 - ?
田颜君然: #include<stdio.h>#include<stdlib.h>#include<conio.h> typedef int DataType; //定义数据类型,以int为例 struct BSTNode //定义二叉排序树节点类型 { DataType data; struct BSTNode *lchild,*rchild; }; int insert(struct BSTNode **root,DataType data...
红星区18013118491: 数据结构课程设计(C语言版) 一元稀疏多项式的运算 - ?
田颜君然: 数据关系:R=约定a1为栈底,an 为栈顶.基本操作:Push(&s,e) 初始条件:栈s已经存在.操作结果:插入元素e为新的栈顶元素 Pop(&s,&e) 初始条件:栈s已经存在且非空. 操作结果:删除s的栈顶元素,并用e返回其值
红星区18013118491: c语言课程设计报告 有一项 数据结构 我该怎么写 一个程序的数据结构是? - ?
田颜君然: 是需要用数据结构,但是看你是要做什么设计了!比如链表的话,你就需要定义一个抽象数据类型链表(LIST),然后用结构体表示这个数据类型,里面有它的各种操作!如果要你做数据结构的课程设计,一般都会给你设计任务的,按照任务设计抽象数据类型,有什么不懂的可以再交流交流
红星区18013118491: 数据结构课程设计(c语言):活期储蓄处理 - ?
田颜君然: #include using namespace std; int total; //初始时银行现存资金总额 int closeTime; //营业结束时间 int arriveTime; //两个到达事件之间的间隔上限 int dealTime; //客户之间交易的时间上限 int dealMoney = 30000; //交易额上限 int currentTime ...