2009级数据结构实验指导书(4)
数据结构实验指导书
}
}
/*生成单链表*/
int CreateSL(slnodetype *la ,int n) { int i ;
slnodetype *p , *q ; q=la ;
for (i=1 ; i<=n ; i++)
{ p=(slnodetype *)malloc(sizeof(slnodetype)); scanf(\q->next=p; q=p; }
q->next=NULL ; return 1 ; }
/*输出单链表*/
void DisplaySL(slnodetype *la, char *comment) { slnodetype *p ; p=la->next ;
if(p) printf(\while(p)
{ printf(\p=p->next ; }
printf(\}
5、约瑟夫环问题
[问题描述]设有N个人围坐一圈,现从某个人开始报数,数到M的人出列,接着从出列的下一个人开始重新报数,数到M的人以出列,如此下去,直到所有人都出列为此。试设计确定他们的出列次序序列的程序。
[基本要求] 选择单向循环链表作为存储结构模拟整个过程,并依次输出列的各人的编号。
[实现提示] 程序运行之后,首先要求用户指定初始报数的下限值,可以n<=30,此题循环链表可不设头节点,而且必须注意空表和非空表的界限。
如 n=8, m=4 时,若从第一个人, 设每个人的编号依次为 1,2,3,?开始报数,则得到的出列次序为4,8,5,2,1,3,7,6,
如下图所示,内层数字表示人的编号 ,每个编号外层的数字代表人出列的序号。 [程序实现]
#include
struct node *next; }linklist;
linklist *creat(head,n) /*使n个人围成一圈,并给每个人标识号数*/ linklist *head; int n ;
- 11 -
数据结构实验指导书
{linklist *s,*p; int i;
s=(linklist * )malloc(sizeof(linklist)); head=s; s->num=1; p=s;
for(i=2;i<=n; i++)
{ s=(linklist *) malloc(sizeof(linklist)); s->num=i; p->next=s; p=s; }
p->next=head; return(head); }/* creat */
linklist * select(linklist *head, int m) { linklist *p, *q; int i, t; p=head; t=1;
q=p; /* q为p的前趋指针*/ p=p->next; do {
t=t+1 ; /*报一次数*/ if(t%m==0) { printf(\ q->next=p->next; free(p); p=q->next; }
else { q=p; p=p->next; } }while(q!=p); head=p;
printf(\ return (head); }/* select */
main( ) { int n,m;
linklist *head;
printf(\ scanf(\
printf(\ scanf(\ head=creat(head,n); head=select(head,m);
printf(\
- 12 -
数据结构实验指导书
}/* main */
三、注意事项
1、 删除元素或插入元素表的长度要变化。
2、 在合并表中当某一个表到表尾了就不用比较了,直接将另一个表的
元素复制到总表去即可。
3、 链表中在第i个节点前删除或插入节点需要用指针来表示第i-1个
节点。
4、 在合并链表时需要设置多个指针变量。
5、 循环链表如果不是要删除的节点则指针后移,否则删除该节点。
思考题:编程实现两个循环单链表的合并。
实验二 栈、队列的实现及应用
一、实验目的
1、掌握栈和队列的顺序存储结构和链式存储结构,以便在实际背景下灵活运用。 2、掌握栈和队列的特点,即先进后出与先进先出的原则。 3、掌握栈和队列的基本操作实现方法。
二、实验内容
1、实现栈的顺序存储
# define MAXSIZE 100 typedef int ElemType; typedef struct
{ ElemType data[MAXSIZE]; int top; }SeqStack;
void InitStack(SeqStack *s) {s->top=0; return 1; }
int StackEmpty(SeqStack *s) { if(s->top==0) return 1; else return 0; }
int StackFull(SeqStack *s)
{ if(s->top==MAXSIZE-1) return 1; else return 0; }
void Push(SeqStack *s,int x)
{ if (StackFull(s)){ printf(\ return 0; }
- 13 -
数据结构实验指导书
else { s->data[s->top]=x;
s->top++; }
}
void Display(SeqStack *s) {if(s->top==0)
printf(\ else{ while(s->top!=0)
{ printf(\ s->top=s->top-1;
}
} }
ElemType Pop(SeqStack *s)
{ if(StackEmpty(s)) return 0; else return s->data[--s->top]; }
ElemType StackTop(SeqStack *s) { int i;
if(StackEmpty(s)) return 0; else { i=s->top-1;
return s->data[i];} /*返回栈顶元素的值,但不改变栈顶指针*/
}
main(SeqStack *p)
{int n,i,k,h,x1,x2,select;
printf(\ InitStack(p);
printf(\ scanf(\ for(i=0;i { printf(\ scanf(\ Push(p,k); } printf(\ printf(\ printf(\ printf(\ printf(\ scanf(\ switch(select) {case 1:{ display(p); break;} case 2:{ printf(\ scanf(\ Push(p,h); - 14 - 数据结构实验指导书 case 3:{ display(p); break;} x1=Pop(p); printf(\ display(p); break; } case 4:{ x2=StackTop(p); printf(\ break; } } 2、利用栈实现数制转换 # define MAXSIZE 100 typedef int ElemType; /*将顺序栈的元素定义为整型*/ typedef struct { ElemType data[MAXSIZE]; int top; }SeqStack; void InitStack(SeqStack *s) {s->top=0; return 1; } int StackEmpty(SeqStack *s) { if(s->top==0) return 1; else return 0; } int StackFull(SeqStack *s) { if(s->top==m-1) return 1; else return 0; } void Push(SeqStack *s,int x) { if (StackFull(s)){ printf(\ return 0; } else { s->data[s->top]=x; s->top++; } } ElemType Pop(SeqStack *s) { ElemType y; if(StackEmpty(s)){ printf(\ return 0; - 15 - }
相关推荐:
- [学前教育]MC9S12XS256RMV1 xs128芯片手册4
- [学前教育]安东尼语录经典语录
- [学前教育]e级gps控制测量技术设计书
- [学前教育]苏教版2022-2022学年八年级下学期期末
- [学前教育]装修公司推广 营销
- [学前教育]家政服务合同(完整版)
- [学前教育]湖北省2016届高三联考语文试题
- [学前教育]爱立信无涯学习系统LTE题库1-LTE基础知
- [学前教育]揭秘大众柴油车作弊软件原理
- [学前教育]人才流失原因及对策分析
- [学前教育]房屋建筑施工工程劳务分包合同
- [学前教育]国际贸易实务试卷A卷09.6
- [学前教育]校园废品回收活动计划方案书范文格
- [学前教育]电大成本会计试题及答案
- [学前教育]大学物理实验 华南理工出版社 绪论答案
- [学前教育]爱丁堡产后抑郁量表
- [学前教育]液压冲击的危害、产生原因与防止方法(
- [学前教育]学生工作总结高一学生期中考试总结_020
- [学前教育]人民医院医疗废物管理规章制度大全
- [学前教育]阳光维生素的巨大抗癌潜能阅读题答案.d
- 马云在云锋基金江苏论坛闭幕式的发言
- 试论小学体育教育中的心理健康教育-教
- 语文A版一年级下册《语文乐园一》教学
- 2021四川大学物理化学考研真题经验参考
- [人教A版]2015-2016学年高中数学 第二
- 终端网点销售返利协议书
- 江苏省2015年眼科学主治医师青光眼考试
- 2017年部编人教版八年级语文上册教案
- 十一中学七年级英语上册Unit7Howmuchar
- 以赛促教的创新性实验教学机制建设实践
- 平凉市崆峒区2015七年级下生物期末试题
- 琶洲(地块五)A、B塔楼1、2#塔吊基础
- 一级医院工作制度与人员岗位职责
- 2018北京西城区高三二模理科数学试题及
- 炒股密码线技术 - 图文
- 职高学生生涯发展辅导教案
- 语文人教版四年级上册8 世界地图引出的
- 最新最新人教版二年级上册全册数学教案
- 2017高考英语全国2卷精彩试题(有问题
- 普通心理学笔记




