数据结构课程设计实验报告信息安全111班游宇豪09Word格式文档下载.docx

上传人:b****6 文档编号:20738164 上传时间:2023-01-25 格式:DOCX 页数:29 大小:135.81KB
下载 相关 举报
数据结构课程设计实验报告信息安全111班游宇豪09Word格式文档下载.docx_第1页
第1页 / 共29页
数据结构课程设计实验报告信息安全111班游宇豪09Word格式文档下载.docx_第2页
第2页 / 共29页
数据结构课程设计实验报告信息安全111班游宇豪09Word格式文档下载.docx_第3页
第3页 / 共29页
数据结构课程设计实验报告信息安全111班游宇豪09Word格式文档下载.docx_第4页
第4页 / 共29页
数据结构课程设计实验报告信息安全111班游宇豪09Word格式文档下载.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

数据结构课程设计实验报告信息安全111班游宇豪09Word格式文档下载.docx

《数据结构课程设计实验报告信息安全111班游宇豪09Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计实验报告信息安全111班游宇豪09Word格式文档下载.docx(29页珍藏版)》请在冰豆网上搜索。

数据结构课程设计实验报告信息安全111班游宇豪09Word格式文档下载.docx

);

return0;

intmain()

inti,m,n,x;

dlnode*);

crtlink(&

getchar();

print(0;

}程序结果:

2、插入:

intinsertdl(dlnode*."

return0;

s=(dlnode*)malloc(sizeof(dlnode));

s->

data=x;

prior=p->

prior;

p->

prior->

next=s;

prior=s;

print()

intdeletedl(dlnode*."

s=p;

next=p->

next;

next->

free(s);

print(top==0;

voidpush(inte);

voidpop(int&

e);

voiddisplay();

};

intsqstack:

:

length()

returntop;

voidsqstack:

push(inte)

{elem[top++]=e;

pop(int&

e)

{if(!

empty())

{e=elem[--top];

;

display()

for(inti=top-1;

i>

=0;

i--)

cout<

<

elem[i]<

"

"

;

endl;

{inti,x,e;

sqstacka(100);

请输入要建立栈的长度:

cin>

>

x;

for(i=1;

i<

=x;

{cout<

请输入要入栈的"

个数据:

e;

a.push(e);

显示队栈中的元素为:

a.display();

请输入出栈元素个数:

出栈元素为:

{a.pop(e);

e<

显示栈中的剩余元素为:

}运行结果:

实验三

——数制转换

数制转换。

利用栈结构的先进后出的具有特性来实现数制转换。

用栈结构实现数制转换。

#include<

{szzh*p;

inta;

while(m!

=0)

a=m%n;

if(a<

16&

&

a>

9)

a=other(a);

p=(szzh*)malloc(sizeof(szzh));

p->

data=a;

next=s->

next;

s->

next=p;

m=n;

intPop(szzh*s)

{charx;

szzh*p;

p=s->

printf("

\n"

转换后的结果:

while(p!

=null){

next=p->

x=p->

data;

if(x<

10)

x);

elseprintf("

%c"

printf("

╰┳uu┳╯谢谢您的使用!

是否继续?

┃︻︻┃\n"

intother(inti)

switch(i)

case10:

return65;

break;

case11:

return66;

case12:

return67;

case13:

return68;

case14:

return69;

case15:

return70;

intChoose(inti)

{intj,x,c;

while(i){

if(i==1)

{printf("

\n~(^_^)进入成功!

~(^_^)\n"

\n输入您想要转换的十进制数:

x);

if(x!

=0)

{

\n输入您要转换成的进制:

c);

Push(&

sq,x,c);

Pop(&

sq);

}

else

printf("

\n0不能转制\n"

\n~~~~~~~~~~\n"

}

else

exit(0);

1.继续Y(^_^)Y\n"

2.退出(^_^)~~\n"

输入您的选择:

scanf("

i);

{inta;

initStack(&

\n欢迎使用本程序,您有如下两个选择:

\n1.开始数制转换\n"

\n2.退出\n"

\n输入您的选择:

a);

Choose(a);

}

运行结果:

实验四

---迷宫求解

熟悉二维数组,并走出迷宫。

用二维数组建立迷宫并输出所有路径。

利用二维数组先建立迷宫,然后用递归输出所有的路径。

stdio.;

maze[i][j]=5;

if(i==endI&

j==endJ)

\n其路径为:

for(m=0;

m<

=M+1;

m++)

{

for(n=0;

n<

=N+1;

n++)

{

if(maze[m][n]==1)

printf("

■"

elseif(maze[m][n]==5)

通"

elseif(maze[m][n]==0)

□"

elseif(maze[m][n]==7)

}

}

if(maze[i][j+1]==0)visit(i,j+1);

if(maze[i+1][j]==0)visit(i+1,j);

if(maze[i][j-1]==0)visit(i,j-1);

if(maze[i-1][j]==0)visit(i-1,j);

maze[i][j]=0;

}

voidshow()

{system("

cls"

inta,b,s;

请输入迷宫行数:

M);

请输入迷宫列数:

N);

输入迷宫(1表示墙0表示通):

if(M==0||N==0)

此迷宫为空!

for(a=1;

a<

=M;

a++)

for(b=1;

b<

=N;

b++)

maze[a][b]);

显示迷宫:

for(a=0;

a++)

{

for(b=0;

if(a==0||b==0||a==M+1||b==N+1)

maze[a][b]=7;

if(maze[a][b]==1)

elseif(maze[a][b]==0)

elseif(maze[a][b]==7)

}

\n输入迷宫的入口(坐标表示):

%d,%d"

startI,&

startJ);

\n输入迷宫的出口(坐标表示):

endI,&

endJ);

if(maze[endI][endJ]==1||maze[startI][startJ]==1)

此迷宫不可通过!

else

visit(startI,startJ);

{ints;

欢迎进入迷宫求解系统\n"

\n"

1.生成迷宫\n"

2.退出\n"

请输入您的选择:

s);

switch(s){

case1:

show();

case2:

exit

(1);

运行结果:

实验五

——求子串、判断两串是否相等、合并串

了解串的概念和线性表之间的关系,掌握串的存储结构及串的基本运算

1、在顺序结构下,求主串s中从第i个字符起,长度为k的子串;

2、将两串连接成一个新串

3、判断两串是否相等

串是由一个或多个字符组成的有限序列。

主串s中从第i个字符起,长度为k的子串;

判断两个串是否相等,首先判断长度,若等,再依次比较每个字符。

1.合并串:

#definemax100

stdio.()

strTypes,l,t;

inti=0,j=0;

charch;

请输入串1,s="

while((ch=getchar())!

='

\n'

s.str[i++]=ch;

s.length=i;

请输入串2,l="

l.str[j++]=ch;

l.length=j;

concat(s,l,t);

2.判断两串是否相等

#definemax40

stdio.0;

for(i=0;

=s.length;

if(s.str[i]!

=p.str[i])

return0;

return1;

strTypes1,s2;

inti=0,j=0,m;

请输入串s1:

s1.str[i++]=ch;

s1.length=i-1;

请输入串s2:

s2.str[j++]=ch;

s2.length=j-1;

if((m=equal(s1,s2))!

两串相等!

两串不等!

3.顺序串的字串

#definemax10

n=s.length;

if(i>

=0&

=n-1&

k>

0&

k<

=n-1)

for(j=0;

j<

k;

j++)

t.str[j]=s.str[i+j];

s.str[k]='

\0'

t.length=k;

returnt;

k==0)

子串为空!

t.str[0]='

t.length=0;

strTypes,l;

inti=0,j,k;

strTypesubString();

输入主串s:

输入子串位置i="

和子串长度k="

k);

l=subString(s,i,k);

if(l.length==0)

i,kiswrong!

输出子串l:

printf("

l.str[j]);

程序结果:

实验六

------用递归算法遍历二叉树

了解二叉树遍历及递归定义,掌握二叉树各种遍历方法和基本操作算法.

建立一颗排序二叉树,并用递归算法分别用前序,中序和后序遍历之

二叉树的遍历是指按照某种顺序访问二叉树中的每个节点,使每个节点被访问一次且只被访问一次.

stdio.(p);

bnode*ins_lc(bnode*p,intx)

bnode*q;

if(p==null)

Illegalinsert."

q=(bnode*)malloc(sizeof(bnode));

q->

data=x;

lc=null;

rc=null;

if(p->

lc!

=null)

rc=q->

lc;

lc=q;

bnode*ins_rc(bnode*p,intx)

rc!

lc=q->

rc;

rc=q;

voidprorder(bnode*p)

return;

%d\t%u\t%d\t%u\t%u\n"

++counter,p,p->

data,p->

lc,p->

rc);

if(p->

prorder(p->

lc);

voidpreorder(bnode*p)

if(p==null)

%d\t"

p->

if(p->

lc!

=null)

preorder(p->

lc);

rc!

rc);

voidinorder(bnode*p)

inorder(p->

voidpostorder(bnode*p)

{

postorder(p->

intChoose()

bnode*bt,*p,*q;

intx,j;

请输入节点,以-1结束:

p=creat(x,null,null);

bt=p;

while(x!

=-1)

p=bt;

while(x!

=p->

data&

q!

p=q;

if(x<

data)

q=p->

lc;

else

rc;

if(x==p->

数据输入有误!

return0;

if(x<

*ins_lc(p,x);

ins_rc(p,x);

}system("

p=bt;

排序二叉树的结构:

序号\t地址\t节点\t左孩子\t右孩子\n"

prorder(p);

while(j){

\n请输入你要的功能\n"

1:

前序遍历二叉树\n"

2:

中序遍历二叉树\n"

3:

后序遍历二叉树\n"

0.退出\n"

j);

switch(j){

case1:

先序遍历次序:

preorder(p);

case2:

中序遍历次序:

inorder(p);

case3:

后序遍历次序:

postorder(p);

case0:

}}

intj;

while(

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1