数据结构线性表作业Word文件下载.docx
- 文档编号:18255390
- 上传时间:2022-12-14
- 格式:DOCX
- 页数:16
- 大小:19.01KB
数据结构线性表作业Word文件下载.docx
《数据结构线性表作业Word文件下载.docx》由会员分享,可在线阅读,更多相关《数据结构线性表作业Word文件下载.docx(16页珍藏版)》请在冰豆网上搜索。
xxxxxxxxxx
//创建时间:
2012.2.26
//修改时间:
2012.3.2
//文件中所定义的函数的名称和主要功能:
//
//voidmenu()实现菜单的显示
//intInitList(SqList*L)生成一个顺序表
//intinsert(SqList*L)向已经生成的表中插入一个数据
//intdel(SqList*L)向已经生成的表中删除一个数据
//intdisplay(SqList*L,k)显示一个顺序表
//voidmain()主函数
//文件中所定义的全局变量的变量名和主要功能
//暂无
//文件中用到的他处定义的全局变量及其出处
//与其他文件的依赖关系
//代码和资料的出处
//<
数据结构>
清华大学出版社
#include<
stdio.h>
stdlib.h>
time.h>
windows.h>
//Sleep()用到
#defineLIST_INIT_SIZE100//一开始分配给数组的基础大小
#defineLISTINCREMENT50//数据溢出的时候重新多分配的大小
typedefstruct//定义结构体
{
int*elem;
//用于存放数据
intlength;
//存放有数据的长度
intlistsize;
//存放数组的大小
}SqList;
//函数名称:
菜单函数
//函数主要功能:
实现窗口的显示功能
//函数调用之前的预备条件:
无
//函数的返回值:
//函数的输入参数:
//函数的输出参数:
//该函数与其它函数的调用和被调用关系:
被主函数调用
voidmenu()
printf("
*********************************************\n"
);
*作者:
Dick*\n"
*信计1001xxxxxxxxxx*\n"
*********************MENU********************\n"
1创造数组\n"
2插入数据到数组\n"
3删除数组中数据\n"
4显示数组数据\n"
5退出程序\n"
}
//除了menu函数外别的函数结尾必须clrscr();
生成函数
生成一个顺序表
SqList*L
intInitList(SqList*L)
inti,j,k=1;
int*newbase;
externintdisplay(SqList*L,intk);
srand(time(0));
//设置随机种子
请输入需要生成数字的数量\n"
scanf("
%d"
&
j);
(*L).elem=(int*)malloc(LIST_INIT_SIZE*sizeof(int));
//动态分配大小
(*L).length=j;
//提前确定数组的长度
(*L).listsize=LIST_INIT_SIZE;
if(!
(*L).elem)//如果没有申请下来。
{
printf("
生成错误\n"
return0;
}
while((*L).length>
=(*L).listsize)//防止溢出语句
newbase=(int*)realloc((*L).elem,((*L).listsize+LISTINCREMENT)*sizeof(int));
if(!
newbase)
{
printf("
return0;
}
(*L).elem=newbase;
(*L).listsize+=LISTINCREMENT;
for(i=0;
i<
j;
i++)
(*L).elem[i]=rand()%100;
数组生成完毕\n"
//结束的几行程序,显示结果,等待,清屏,返回,后面一样
生成的数组是:
\n"
display(L,k);
system("
CLS"
return0;
插入函数
向已经生成的表中插入一个数据
intinsert(SqList*L)
inti,j,k=1;
int*p,*q;
if((*L).length<
0)//容错语句
数组为空,请先生成数组\n"
Sleep(1000);
system("
现在的数组是:
//居然要显示数组
do//防止出现错误的输入,强令位置输入正确,后面都一样
请输入要插入的位置\n"
scanf("
&
i);
if(i<
1||i>
(*L).length+1)
输入错误,请重新输入\n"
}while(i<
(*L).length+1);
do
请输入要插入的数字(0~100)\n"
if(j<
0||j>
100)
请重新输入\n"
}while(j<
100);
数据溢出,分配新数组\n"
q=&
((*L).elem[i-1]);
//从后往前循环,让前一个放到后一个地址上
for(p=&
((*L).elem[(*L).length-1]);
p>
=q;
--p)
*(p+1)=*p;
*q=j;
++(*L).length;
数组插入完毕\n"
删除函数
向已经生成的表中删除一个数据
intdel(SqList*L)
inti,k=1;
int*p,*q;
0)
请输入要删除的位置\n"
(*L).length)
(*L).length);
p=&
(*L).elem[i-1];
//从前往后循环,后面的盖住前面的
q=(*L).elem+(*L).length-1;
for(++p;
p<
++p)
*(p-1)=*p;
(*L).length--;
删除完毕\n"
显示函数
显示一个顺序表
intdisplay(SqList*L,intk)
inti,j=0;
(*L).length;
i++)//按顺序输出数组
%d\t"
(*L).elem[i]);
j++;
if(j==5)//输出五个数字后换行
j=0;
按任意键返回\n"
getchar();
if(k==0)
voidmain()
inti,k=0;
SqListList;
SqList*p;
List;
while
(1)
menu();
do//这里循环直到你输入正确的数字为止
scanf("
if(i<
1||i>
5)
printf("
错误数字,请重新输入\n"
}while(i<
5);
switch(i)
case1:
InitList(p);
break;
case2:
insert(p);
case3:
del(p);
case4:
display(p,k);
case5:
exit(0);
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
约瑟夫.c
2012.3.1
//voidJOSEPHU(intpeople_Number,intstart_Point,intjudge_Number)求解约瑟夫问题
//第二章线性表2.28老师的课件
malloc.h>
//使用动态链表用到
typedefstructnode
{
intdata;
//结点值
structnode*next;
//存储下一个结点的地址
}LinkList;
JOSEPHU函数
求解约瑟夫问题
无(这样的话只能在函数进行输出了)
voidJOSEPHU(intpeople_Number,intstart_Point,intjudge_Number)
inti,j=0;
LinkList*p,*head,*create,*startpoint;
//指针,head肯定是头指针了
head=(LinkList*)malloc(sizeof(LinkList));
//生成动态链表
p=head;
head)
无内存空间可分配\n"
按任意键退出程序\n"
head->
data=1;
next=head;
//循环链表的尾指针一定指向头指针
for(i=1;
i<
people_Number;
i++)//将每个人的资料写进data顺便建立好这个循环链表
create=(LinkList*)malloc(sizeof(LinkList));
create->
data=i+1;
p->
next=create;
p=p->
next;
//先把需要的指针移动到开始的人的位置
startpoint=head;
for(i=0;
start_Point-1;
i++)
startpoint=startpoint->
//这里就可以输出了
nowoutputtheorder:
while(head!
=head->
next)
for(i=0;
judge_Number-2;
i++)
startpoint=startpoint->
p=startpoint->
if(p!
=head)
startpoint->
next=p->
if(j!
=5)
p->
data);
else
{
j=0;
%d\n"
}
free(p);
else
head=startpoint->
//不得已移动头指针,据说头指针不能动?
pr
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 线性 作业