数据结构课程设计实验报告信息安全111班游宇豪09.docx
- 文档编号:3166489
- 上传时间:2022-11-18
- 格式:DOCX
- 页数:38
- 大小:162.46KB
数据结构课程设计实验报告信息安全111班游宇豪09.docx
《数据结构课程设计实验报告信息安全111班游宇豪09.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计实验报告信息安全111班游宇豪09.docx(38页珍藏版)》请在冰豆网上搜索。
数据结构课程设计实验报告信息安全111班游宇豪09
(此文档为word格式,下载后您可任意编辑修改!
)
数据结构课程设计
——实验报告
专业班级:
信息安全111班
学生学号:
09
学生姓名:
游宇豪
指导老师:
杨三元老师
完成时间:
2013/1/10
实验一
——双向链表的建立、删除、插入
一、实验目的
了解双向链表的结构特征、描述方法以及有关概念,掌握双向链表建立、删除和插入的基本操作算法。
二、实验内容
建立一个包括头结点和双向链表,在指定位置插入结点和删除结点。
三、实验要点及说明
在双向链表中,每个结点有两个指针域,一个指向其直接后继,一个指向其直接前驱。
四、程序实现
1、建立:
#include
#include
#definenull0
typedefstructdnode
{intdata;
structdnode*prior,*next;
}dlnode;
intinitiatedl(dlnode**h)
{
*h=(dlnode*)malloc(sizeof(dlnode));
(*h)->next=null;
}
intcrtlink(dlnode**h,intn)
{
inti;
dlnode*p,*q;
q=*h;
printf("输入链表中的元素:
");
for(i=1;i<=n;i++)
{
p=(dlnode*)malloc(sizeof(dlnode));
scanf("%d",&p->data);
q->next=p;
p->prior=q;
q=p;
}
q->next=null;
}
intprint(dlnode*h)
{
dlnode*p;
p=h->next;
printf("链表即为:
");
while(p!
=null)
{
printf("%d",p->data);
p=p->next;
}
printf("\n");
return0;
}
intmain()
{
inti,m,n,x;
dlnode*h;
initiatedl(&h);
printf("链表中元素个数=");
scanf("%d",&n);
crtlink(&h,n);
getchar();
print(h);
return0;
}程序结果:
2、插入:
#include
#include
#definenull0
typedefstructdnode
{
intdata;
structdnode*prior,*next;
}dlnode;
intinitiatedl(dlnode**h)
{
*h=(dlnode*)malloc(sizeof(dlnode));
(*h)->next=null;
}
intcrtlink(dlnode**h,intn)
{
inti;
dlnode*p,*q;
q=*h;
printf("输入链表中的元素:
");
for(i=1;i<=n;i++)
{
p=(dlnode*)malloc(sizeof(dlnode));
scanf("%d",&p->data);
q->next=p;
p->prior=q;
q=p;
}
q->next=null;
}
intinsertdl(dlnode*h,inti,intx)
{
dlnode*p,*s;
intj;
p=h;
j=0;
while(p!
=null&&j
{
p=p->next;
j++;
}
if(j!
=i||i<1)
{
printf("插入位置不合理。
\n.");
return0;
}
s=(dlnode*)malloc(sizeof(dlnode));
s->data=x;
s->prior=p->prior;
p->prior->next=s;
s->next=p;
p->prior=s;
}
intprint(dlnode*h)
{
dlnode*p;
p=h->next;
printf("链表即为:
");
while(p!
=null)
{
printf("%d",p->data);
p=p->next;
}
printf("\n");
return0;
}
intmain()
{
inti,m,n,x;
dlnode*h;
initiatedl(&h);
printf("链表中元素个数=");
scanf("%d",&n);
crtlink(&h,n);
getchar();
print(h);
printf("No.i=");
scanf("%d",&i);
printf("插入元素=");
scanf("%d",&x);
insertdl(h,i,x);
print(h);
}程序结果:
3、删除:
#include
#include
#definenull0
typedefstructdnode
{
intdata;
structdnode*prior,*next;
}dlnode;
intinitiatedl(dlnode**h)
{
*h=(dlnode*)malloc(sizeof(dlnode));
(*h)->next=null;
}
intcrtlink(dlnode**h,intn)
{
inti;
dlnode*p,*q;
q=*h;
printf("输入链表中的元素:
");
for(i=1;i<=n;i++)
{
p=(dlnode*)malloc(sizeof(dlnode));
scanf("%d",&p->data);
q->next=p;
p->prior=q;
q=p;
}
q->next=null;
}
intdeletedl(dlnode*h,inti)
{
dlnode*p,*s;
intj;
p=h;
j=0;
while(p!
=null&&j
{
p=p->next;
j++;
}
if(j!
=i||i<1)
{
printf("删除位置不合理\n.");
return0;
}
s=p;
p->prior->next=p->next;
p->next->prior=p->prior;
free(s);
}
intprint(dlnode*h)
{
dlnode*p;
p=h->next;
printf("链表即为:
");
while(p!
=null)
{
printf("%d",p->data);
p=p->next;
}
printf("\n");
return0;
}
intmain()
{
inti,m,n,x;
dlnode*h;
initiatedl(&h);
printf("链表中元素个数=");
scanf("%d",&n);
crtlink(&h,n);
getchar();
print(h);
printf("No.i=");
scanf("%d",&i);
deletedl(h,i);
print(h);
}程序结果:
实验二
---顺序栈的建立,入栈,出栈
一、实验目的
了解顺序栈的结构特点及有关概念,掌握顺序栈建立及入栈,出栈的基本操作算法.
二、实验内容
进行顺序栈初始化及入栈,实现顺序栈建立及入栈,出栈的基本操作.
三、实验要点及说明
栈是一种只允许在表的一端进行插入或删除操作的线性表,对栈元素的操作应符合先进后出的原则.只允许插入,删除操作的一端称为栈顶,另一端称为栈底.
四、程序实现
#include
usingnamespacestd;
classsqstack
{
private:
inttop;
intmaxsize;
int*elem;
public:
sqstack(intsize)
{maxsize=size;
elem=newint[maxsize];
top=0;
}
~sqstack(){delete[]elem;}
intlength();
boolempty(){returntop==0;}
voidpush(inte);
voidpop(int&e);
voiddisplay();
};
intsqstack:
:
length()
{
returntop;
}
voidsqstack:
:
push(inte)
{elem[top++]=e;
}
voidsqstack:
:
pop(int&e)
{if(!
empty())
{e=elem[--top];
;
}
}
voidsqstack:
:
display()
{
for(inti=top-1;i>=0;i--)
{
cout< } cout< } intmain() {inti,x,e; sqstacka(100); cout<<"请输入要建立栈的长度: "< cin>>x; for(i=1;i<=x;i++) {cout<<"请输入要入栈的"< "< cin>>e; a.push(e); } cout<<"显示队栈中的元素为: "< a.display(); cout<<"请输入出栈元素个数: "; cin>>x; cout<<"出栈元素为: "; for(i=1;i<=x;i++) {a.pop(e); cout< } cout< cout<<"显示栈中的剩余元素为: "< a.display(); return0; }运行结果: 实验三 ——数制转换 一、实验目的 数制转换。 二、实验内容 利用栈结构的先进后出的具有特性来实现数制转换。 三、实验要点及说明 用栈结构实现数制转换。 四、程序实现 #include #include #definenull0 typedefstructnode { chardata; structnode*next; }szzh; szzhsq; intinitStack(szzh*s) { s=(szzh*)malloc(sizeof(szzh)); s->next=null; } intPush(szzh*s,intm,i
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程设计 实验 报告 信息 安全 111 班游宇豪 09