数据结构课程设计报告Word文档下载推荐.docx
- 文档编号:5778237
- 上传时间:2023-05-05
- 格式:DOCX
- 页数:13
- 大小:71.45KB
数据结构课程设计报告Word文档下载推荐.docx
《数据结构课程设计报告Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计报告Word文档下载推荐.docx(13页珍藏版)》请在冰点文库上搜索。
正确出列顺序应为2,5,4,1,3
4.算法思想:
是用不带头结点单循环链表存储每个人的密码,链表长度为n,由用户键入m,n,key完成出列计算。
模块划分:
main函数完成全部内容
数据结构:
单循环链表
源程序:
#include"
stdio.h"
malloc.h"
structnode
{
intno;
intcode;
node*next;
};
intmain()
{
intm,n,i,j;
node*p,*q,*first;
printf("
*************约瑟夫环*************\n\n"
);
请输入m的初始值m:
"
scanf("
%d"
&
m);
\n请输入人数n:
n);
\n"
for(i=1;
i<
=n;
i++)
{
if(i==1)
first=p=(node*)malloc(sizeof(node));
if(p==0)
return0;
}
else
q=(node*)malloc(sizeof(node));
if(q==0)
p->
next=q;
p=q;
第%d个人的key为:
"
i);
p->
code);
no=i;
next=first;
p=first;
\n\n*************出列*************\n\n"
for(j=1;
j<
j++)
m;
i++,p=p->
next);
m=p->
code;
%d"
p->
no);
no=p->
next->
no;
code=p->
q=p->
next;
next=p->
free(q);
\n\n完毕\n"
}
测试情况:
编写一个函数,实现用键盘输入顺序表的元素进行建立顺序表的操作。
然后依次调用初始化、求数据元素个数,插入、删除和取数据元素并输出新的顺序表。
(1)使用动态数组结构。
(2)顺序表的操作包括:
初始化、求数据元素个数、插入、删除、取数据元素,编写每个操作的函数。
(3)设计一个测试主函数。
以随机输入的元素为原始数据
算法思想:
可变长顺序表的设计,主要是利用动态数组结构的设计方法。
动态数组是指用动态内存分配方法定义的数组,他中的元素的个数是在用户申请动态数组空间时才确定
的。
此外,用键盘输入顺序表的元素,进行建立顺序表。
依次调用初始化、求数据元素个数,插入、删除和取数据元素并输出新的顺序表。
Main.c文件。
Main.c文件包括以下函数:
初始化,求数据元素个数,插入,删除,取数据元素。
voidInitiate(SeqList*s,intmax)函数:
其功能是用于顺序表的初始化。
intListLength(SeqList*L)函数:
其功能是用于求顺序表的数据元素个数。
intInsert(SeqList*s)函数:
其功能是用于顺序表的插入。
intDelete(SeqList*s)函数:
其功能是用于顺序表的删除。
intgetdata(SeqList*s)函数:
其功能是用于函数的获取元素
voidmain()函数:
主函数。
其功能建立顺序表并调用以上函数实现问题要求。
1.顺序表结构体定义:
typedefstruct
{int*str;
intLength;
}SeqList;
2.动态数组动态申请空间:
s->
str=(int*)malloc(sizeof(int)*max);
#include<
stdio.h>
malloc.h>
stdlib.h>
int*str;
intLength;
voidmain()
voidInitiate(SeqList*s,intmax);
//函数声明
intListLength(SeqList*s);
intInsert(SeqList*s);
intDelete(SeqList*s);
intGetdata(SeqList*s);
voidPrint(SeqList*s,int);
SeqListL;
intx,max;
+++++++++++++++++可变长顺序表设计+++++++++++++++\n"
\n请输入创建顺序表的长度:
max);
请输入创建的顺序表的值:
Initiate(&
L,max);
++++++++++++++++++++++++++++++++++++++++++++++++\n"
+功能选项+\n"
+1.数据元素个数2.数据元素插入+\n"
+3.数据元素删除4.取数据元素+\n"
+0.退出+\n"
way:
\n输入序号选择程序功能:
x);
if(x==1)
{
printf("
数据元素个数是:
%d\n"
ListLength(&
L));
gotoway;
}
if(x==2)
Insert(&
L);
gotoway;
if(x==3)
Delete(&
if(x==4)
Getdata(&
if(x==0)
\n\n谢谢使用!
\n\n"
}
voidInitiate(SeqList*s,intmax)//初始化顺序表
inti,x;
s->
//动态申请空间
Length=max;
for(i=0;
i<
max;
i++)
scanf("
str[i]=x;
intListLength(SeqList*L)//元素个数
returnL->
Length;
intInsert(SeqList*s)//插入
inti,j,x;
请输入要插入的位置及数据:
%d%d"
j,&
if(j<
0||j>
Length+1)
参数不合法!
else
realloc(s->
str,(s->
Length+1)*sizeof(int));
//新结点申请空间
for(i=s->
Length-1;
i>
=j-1;
i--)
{
s->
str[i+1]=s->
str[i];
}
str[j-1]=x;
Length++;
新的顺序表是:
s->
str[i]);
return1;
voidPrint(SeqList*s,intmax)//顺序表
inti;
intDelete(SeqList*s)//删除
请输入要删除数据的位置:
j);
Length)
x=s->
str[j-1];
for(i=j;
s->
str[i-1]=s->
Length--;
删除的数据为:
x);
新的顺序表为:
intGetdata(SeqList*s)//取数据元素
intj,x;
请输入要获取元素的位置:
=0||j>
x=s->
获取的元素为:
%d\n"
个人总结:
在这次课程设计中,我收获了很多单从课本上不能学到的知识,以及经验,这对我对数据结构这门课程的认识与理解有很大的帮助。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程设计 报告
![提示](https://static.bingdoc.com/images/bang_tan.gif)