数据结构实习报告

半程客梦 范文 报告范文
精选回答

数据结构实习报告本文简介:数据结构实习报告姓名:学号:班级:一、一元多项式计算1、题目要求:能够按照指数降序排列建立并输出多项式;能够完成两个多项式的相加、相减和相乘,并将结果输出。2、程序代码:#include#includetypedefstructPolynomial{floatcoef;intexpn;structP

数据结构实习报告本文内容:

数据结构实习报告

名:

号:

级:

一、一元多项式计算

1、题目要求:

能够按照指数降序排列建立并输出多项式;能够完成两个多项式的相加、相减和相乘,并将结果输出。

2、程序代码:

#include

#include

typedef

struct

Polynomial{

float

coef;

int

expn;

struct

Polynomialnext;

}*Polyn,Polynomial;

//Polyn为结点指针类型

void

Insert(Polyn

p,Polyn

h){

if(p->coef==0)

free(p);

//系数为0的话释放结点

else{

Polyn

q1,q2;

q1=h;q2=h->next;

while(q2

q2=q2->next;

}

if(q2

free(p);

if(!q2->coef){

//系数为0的话释放结点

q1->next=q2->next;

free(q2);

}

}

else{

//指数为新时将结点插入

p->next=q2;

q1->next=p;

}

}

}

//Insert

Polyn

CreatePolyn(Polyn

head,int

m){

//建立一个头指针为head、项数为m的一元多项式

int

i;

Polyn

p;

p=head=(Polyn)malloc(sizeof(struct

Polynomial));

head->next=NULL;

for(i=0;icoef,Insert(p,head);

//调用Insert函数插入结点

}

return

head;

}//CreatePolyn

void

DestroyPolyn(Polyn

p){//销毁多项式p

Polyn

q1,q2;

q1=p->next;

q2=q1->next;

while(q1->next){

free(q1);

q1=q2;

//指针后移

q2=q2->next;

}

}

void

PrintPolyn(Polyn

P){

Polyn

q=P->next;

int

flag=1;

//项数计数器

if(!q)

{

//若多项式为空,输出0

putchar(

0

);

printf(“\n“);

return;

}

while

(q){

if(q->coef>0

//系数大于0且不是第一项

if(q->coef!=1

if(q->expn==1)

putchar(

X

);

else

if(q->expn)

printf(“X^%d“,q->expn);

}

else{

if(q->coef==1){

if(!q->expn)

putchar(

1

);

else

if(q->expn==1)

putchar(

X

);

else

printf(“X^%d“,q->expn);

}

if(q->coef==-1){

if(!q->expn)

printf(“-1“);

else

if(q->expn==1)

printf(“-X“);

else

printf(“-X^%d“,q->expn);

}

}

q=q->next;

flag++;

}//while

printf(“\n“);

}

//PrintPolyn

int

compare(Polyn

a,Polyn

b){

if(a

else

if(!a||a->expnexpn)

return

-1;

else

return

0;

}

else

if(!a

//a多项式已空,但b多项式非空

else

return

1;

//b多项式已空,但a多项式非空

}

//compare

Polyn

AddPolyn(Polyn

pa,Polyn

pb){

//求解并建立多项式a+b,返回其头指针

Polyn

qa=pa->next;

Polyn

qb=pb->next;

Polyn

headc,hc,qc;

hc=(Polyn)malloc(sizeof(struct

Polynomial));//建立头结点

hc->next=NULL;

headc=hc;

while(qa||qb){

qc=(Polyn)malloc(sizeof(struct

Polynomial));

switch(compare(qa,qb)){

case

1:

{

qc->coef=qa->coef;

qc->expn=qa->expn;

qa=qa->next;

break;

}

case

0:

{

qc->coef=qa->coef+qb->coef;

qc->expn=qa->expn;

qa=qa->next;

qb=qb->next;

break;

}

case

-1:

{

qc->coef=qb->coef;

qc->expn=qb->expn;

qb=qb->next;

break;

}

}//switch

if(qc->coef!=0){

qc->next=hc->next;

hc->next=qc;

hc=qc;

}

else

free(qc);

//当相加系数为0时,释放该结点

}

//while

return

headc;

}

//AddPolyn

Polyn

SubtractPolyn(Polyn

pa,Polyn

pb){//求解并建立多项式a+b,返回其头指针

Polyn

h=pb;

Polyn

p=pb->next;

Polyn

pd;

while(p){

//将pb的系数取反

p->coef*=-1;

p=p->next;

}

pd=AddPolyn(pa,h);

for(p=h->next;p;p=p->next)

//恢复pb的系数

p->coef*=-1;

return

pd;

}

//SubtractPolyn

int

main(){

int

m,n,flag=0;

float

x;

Polyn

pa=0,pb=0,pc,pd,pe,pf;//定义各式的头指针,pa与pb在使用前付初值NULL

printf(“请输入a的项数:“);

scanf(“%d“,pa=CreatePolyn(pa,m);//建立多项式a

printf(“请输入b的项数:“);

scanf(“%d“,pb=CreatePolyn(pb,n);//建立多项式a

//输出菜单

printf(“**********************************************\n“);

printf(“操作提示:\n\t1.输出多项式a和b\n\t2.建立多项式a+b\n\t3.建立多项式a-b\n“);

printf(“\t4.退出\n**********************************************\n“);

for(;;flag=0){

printf(“执行操作:“);

scanf(“%d“,if(flag==1){

printf(“多项式a:“);PrintPolyn(pa);

printf(“多项式b:“);PrintPolyn(pb);continue;

}

if(flag==2){

pc=AddPolyn(pa,pb);

printf(“多项式a+b:“);PrintPolyn(pc);

DestroyPolyn(pc);continue;

}

if(flag==3){

pd=SubtractPolyn(pa,pb);

printf(“多项式a-b:“);PrintPolyn(pd);

DestroyPolyn(pd);continue;

}

if(flag==4)

break;

if(flag4)

printf(“Error!!!\n“);continue;

}//for

DestroyPolyn(pa);

DestroyPolyn(pb);

return

0;

}

3、运行结果:

二、设计一个模拟计算器的程序

1、题目要求:

设计一个模拟计算器的程序

要求对包含加、减、乘、除、括号运算符的任意整型表达式进行求解。

2、

程序代码:

#include

#include

#include

using

namespace

std;

class

calculator

{

public:

void

cal(string

s);

void

express();

int

legal(string

w);

private:

void

push();

void

pop();

bool

can();

int

StringToNumber(string

aStr);

int

number[1000];

char

symbolt[1000];

string

s,t;

int

i,j,p;

};

void

calculator::push()

{

p++;

symbolt[p]=s[i];

}

void

calculator::pop()

{

p--;

switch

(symbolt[p+1])

{

case

+

:{number[p]+=number[p+1];break;}

case

-

:{number[p]=number[p]-number[p+1];break;}

case

:{number[p]=number[p]*number[p+1];break;}

case

/

:{number[p]=number[p]/number[p+1];break;}

}

}

bool

calculator::can()

{

if

(((s[i]==

+

)||(s[i]==

-

))

if

(((s[i]==

)||(s[i]==

/

))

return

false;

}

int

calculator::StringToNumber(string

aStr)

{

int

number

=

0;

for

(int

i=0;i=

0

)

calculator

MyCal;

if(!MyCal.legal(w))

{

MyCal.cal(w);

MyCal.express();

}

char

chose;

cout>chose;

if

(chose==

n

||chose==

N

)

break;

}

return

0;

}

3、

运行结果:

三、Josephus问题

1、

题目要求:

设有n个人围坐在一个圆桌周围,现从第s个人开始报数,数到第m的人出列,然后从出列的下一个人重新开始报数,数到m的人又出列,如此重复,直到所有的人全部出列为止。Josephus问题是:对于任意给定的n,m,s,求出按出列次序得到的n个人员的顺序表。

2、

程序代码:

#include

#include

“malloc.h“#define

False

0

#define

TRUE

1

typedef

int

DataType;

struct

SeqList{

int

MAXNUM;

int

n;

DataTypeelement;

};

typedef

struct

SeqListPSeqList;

PSeqList

createNullList_seq(int

m){

PSeqList

palist=(PSeqList)malloc(sizeof(struct

SeqList));

if(palist!=NULL){

palist->element=(DataType*)malloc(sizeof(DataType)*m);

if(palist->element){

palist->MAXNUM=m;

palist->n=0;

return

palist;

}

else

free(palist);

}

printf(“Out

of

space!!\n“);

return

NULL;

}

int

insertPre_seq(PSeqList

palist,int

p,DataType

x){

/*在palist所指顺序表中下标为P的元素之前插入元素x*/

int

q;

if

(palist->n>=palist->MAXNUM){//溢出

printf(“Overflow!

\n“);

return

0;

}

if

(ppalist->n){

printf(“Not

exist!

\n“);

return

0;

}

for(q=palist->n-1;q>=p;q--)

palist->element[q+1]=palist->element[q];

palist->element[p]=x;

palist->n=palist->n+1;

return

1;

}

int

deleteP_seq(PSeqList

palist,int

p){

//删除下标为p的元素

int

q;

if

(ppalist->n-1){

printf(“Not

exist!

\n“);

return

0;

}

for(q=p;qn-1;q++)

palist->element[q]=palist->element[q+1];

palist->n=palist->n-1;

return

1;

}

void

josephus_seq(PSeqList

palist,int

s,int

m){

int

s1,i,w;

s1=s-1;

for(i=palist->n;i>0;i--){

s1=(s1+m-1)%i;

w=palist->element[s1];

printf(“Out

element

%d

\n“,w);

deleteP_seq(palist,s1);

}

}

main(){

PSeqList

jos_alist;

int

i;

int

n,s,m;

printf(“\nplease

input

the

values(element);

free(jos_alist);

}

}

3、

运行结果:

例如输入n=8,s=1,m=4;结果如下:

14

潇洒走开 2022-06-25 21:43:44

相关推荐

蚍蜉撼树是什么意思蚍(蚍蜉撼树是什么意思)

1、蜉蝣树(拼音pfhnsh)是中国成语,蜉蝣树(蜉蝣:一种大蚂蚁;Shake:摇动)比喻力量本来就很弱,但是你想摇动一个很强大的东西,就不能随心所欲了。这个成语一般用作主语、谓语、宾语,属于主谓式,含有贬义。...
展开详情

得意洋洋,反义词(得意洋洋的反义词)

1、得意洋洋的反义词有郁郁寡欢的,有空虚进取的书,有哭天抢地的,有郁郁寡欢的,有失意的,有垂头丧气的,有谦虚谨慎的,有黯然销魂的,有抑郁的。2、“得意”是中国成语,读作:dyyngyng,解释为:得意:明白意图...
展开详情

如法炮制的意思和造句(如法炮制)

1、如法炮制(拼音:rfpozh)是一个成语,起源于西汉的司马迁《史记魏世家》。2、如法炮制(炮制:一种将中药焙炒的方法)是指按照制造方法制造中药;比喻按照现成的方式办事。一般在句子中做谓语、定语、状语。3、出...
展开详情

阳春白雪和下里巴人最初指的是什么(春白雪)

1、杨春白雪。2、杨春白雪,中国的一个成语,发音为yngchnbixu,最初指战国时期楚国比较高雅的歌曲,后来指博大精深的文学艺术。3、战国楚宋玉《对楚王问》:“仲英有歌者,其开头为:《对楚王问》《下里》。全国...
展开详情

依草附木的理解(依草附木的意思)

1、草乌,中国成语,拼音为ycofm,意为鬼神有所依靠,善于造化;比喻依靠他人的力量后,作恶多端;也比喻不能自立,依赖他人。从《巫庙》。2、出自五代和纣王的诗《巫庙》:“天有福报,老人为精灵,循草而沾木,无虚妄...
展开详情

精选推荐更多>

不雅是什么意思

“不雅”是汉语词汇,拼音是bù yǎ,释义:不正、不雅观、不好看。
出处:
1、《荀子·儒效》:“道过三代谓之荡,法贰后王谓之不雅。”
2、清·俞正燮《癸巳存稿·法后王》:“法贰后王谓之不雅,以居下倍上,是邪说也。不雅者,不正也。”
3、清·李渔《凰求凤·避色》:“我这园亭里面,常有附近的女子,借游玩为名,不时进来走动,旁人观看甚是不雅。从今以后,须要严词拒绝。”
4、清·曹雪芹《红楼梦》第六十八回:“叫外人听著,不但我的名声不好听,就是妹妹的名儿也不雅。”
5、清·曹雪芹《红楼梦》第八十回:“这话好不通,你爱谁,说明了,就收在房里,省得别人看着不雅。”
6、清·曹雪芹《红楼梦》第八十一回:“没有对证,赵姨娘那里肯认帐?事情又大,闹出来外面也不雅。等他自作自受,少不得要自己败露的。”
造句:
1、这首歌曲的内容实在不雅,可以称为靡靡之音了。
2、后来罗贯中写书,觉得不雅,便改成望梅止渴,流传至今。
3、没有签名档就像没穿裤子,方便是很方便,就是有些不雅。

盼是按照什么顺序写的

《盼》是按照事情发展顺序写的。《盼》是人教统编版六年级上册语文教材(2019年秋季修订版)第17课的课文,出自铁凝的《夜路》,并特邀张蕾、梓君参与本文音频的朗读。
原文节选:
有一天,妈妈下班回来,送给我一个扁扁的纸盒子。我打开一看,是一件淡绿色的、透明的新雨衣。我立刻就抖开雨衣往身上穿。怎么?雨衣上竟然还长着两只袖筒,不像那种斗篷式的:手在雨衣里缩着,什么也干不了。穿上这件情况就不同了,管你下雨不下雨,想干什么就干什么。
我一边想,一边在屋里走来走去,戴上雨帽,又抖抖袖子,把雨衣弄得窸窸窣窣响。直到妈妈一声喊:“蕾蕾,你疯啦?嫌身上没长痱子吗?”我才赶忙把雨衣脱下来。摸摸后背,衬衫已经让汗水浸湿了,浑身凉冰冰的。
本文中,作者以孩子的视角,叙述了“我”得到新雨衣,盼望下雨穿雨衣、想借买酱油穿雨衣、如愿穿上新雨衣的经历,通过语言、动作、心理的描写,详细、具体地展示了小主人公“盼”的心理变化,表现了童真童趣。

职校退学了换学校学籍还在吗

职校退学、换学校学籍还在,在学生离开学校后,所在教育部门会保留一段时间,方便学生重新回到学校,如果一年内没有继续上学或有严重违规被开除才会删除学籍。
学籍是指一个学生属于某学校的一种法律上的身份或者资格,登记学生姓名的册子,专指作为某校学生的资格。2013年9月1日起,全国已经初步建立了小中大学籍的信息管理系统。
根据《普通高等学校学生管理规定》,按照国家招生规定录取的新生,持录取通知书,到校办理入学手续,复查合格者予以注册,取得学籍。复查不合格者,由学校区别情况,予以处理,直至取消入学资格。

花木兰什么朝代

花木兰是南北朝。
花木兰的姓氏、籍贯等,史书并无明确载。北魏时期,北方游牧民族不断南下骚扰,北魏政权规定每家出一名男子上前线。但是木兰的父亲年事已高又体弱多病,所以,木兰决定替父从军。从此,花木兰开始了她长达十几年的军旅生活,在数十年后凯旋回家。
花木兰,中国古代巾帼英雄,忠孝节义,代父从军击败入侵民族而流传千古,事迹流传至今,唐代皇帝追封为“孝烈将军”。
花木兰是中国古代传说的四大巾帼英雄之一,是中国南北朝时期一个传说色彩极浓的巾帼英雄,她的故事也是一支悲壮的英雄史诗。花木兰最早出现于南北朝一首叙事诗《木兰辞》中,该诗约作于南北朝的北魏,最初收录于南朝陈的《古今乐录》。僧人智匠在《古今乐录》称:“木兰不知名。”长300余字,后经隋唐文人润色。公元429年的北魏破柔然之战,正史对于这场战役有3个行军记载切合了《木兰辞》提及的地名。《魏书·世祖纪上》:“车驾东辕,至黑山”。《魏书·列传第九十一》:“车驾出东道,向黑山……北渡燕然山”。《北史·列传第八十六》:“车驾出东道,向黑山……北度燕然山”。
常见热点问答
热点搜索
1-20
21-40
41-60
61-80
81-100
101-120
121-140
141-160
161-180
181-200
作文大全
1-20
21-40
41-60
61-80
81-100
101-120
121-140
141-160
161-180
181-200