第二章 线性表(10)
for(q=head,p=head->next; p!=0; q=p,p=p->next)if(q->data>p->data) return(0); return(1); 8.编写向类型为List的线性表L中第i个元素位置插入一个元素的算法,假定不需要对i的值进行有效性检查,同时不需要检查存储空间是否用完。
Void Insert(List& L,int i, ElemType x) 评分标准:请根据编程情况酌情给分。
vioid Insert(List& L,int i,ElemType x) {
for(int j=L.size-1;j>=i-1;j--) L.list[j+1]=L.list[j]; L.list[i-1]=x; L.size++; }
9.编写算法,求不带头结点的单链表的表表长。(7分) 已知单链表结点数据结构如下:
typedef struct node
{
int data;
struct node *next;
} LNode, *LinkList;
int length_LinkList(LinkList L) {
LNode *p=L;
int j = 0
while(p->next != NULL) { p = p->next; ++j; }
return j; }
10.编写算法,删除顺序表第i个元素。(8分) 已知顺序表的数据结构如下: typedef struct {
int data[100]; int last;
} SeqList;
int delete_SeqList(SeqList *L,int i) {
31
int j;
if (i <1 || i>L->last+1) {
printf(“不存在第i个元素”); return 0;
}
for (j=i; j<=L->L->last; ++j) { l->data[j-1] = L->data[j]; }
L->last--; return 1; }
11.编写算法查找不带头结点的单链表中的第i个结点,如找到返回1,否则返回0。(7分)
已知单链表结点数据结构如下:
typedef struct node
{
int data;
struct node *next;
} LNode, *LinkList;
LNode *Get_LinkList(inkList L, int i) {
LNode *p = L;
int j = 0;
while(p->next != NULL && j < i) { p = p->next; ++j; }
if (j == i) { return p; }
else {
return NULL; } }
12.编写算法,将任意十进制数转换成其他进制,要求写出完整代码,可采用顺序栈或链栈实现。(12分) #define Maxsize 100 typedef struct {
int data[Maxsize]; int top;
32
}SeqStack;
SeqStack *Init_SeqStack() {
SeqStack *s;
s=(SeqStack *)malloc(sizeof(SeqStack)); s->top=-1; return s; }
/*入栈*/
int Push_Seqstack(SeqStack *s,int x) {
if(s->top==Maxsize-1)return 0; else{
s->top++;
s->data[s->top]=x; return 1; } }
/*出栈*/
int Pop_SeqStack(SeqStack *s,int *x) {
if(Empty_SeqStack(s)) return 0; else{
*x=s->data[s->top]; s->top--; return 1; } }
/*判空栈*/
int Empty_SeqStack(SeqStack *s) {
if(s->top==-1) return 1; else return 0; }
void conversion(int N,int r) {
SeqStack *p; int y;
p=Init_SeqStack(); while(N) {
if(Push_Seqstack(p,N%r)==1) {N=N/r; } else
33
break; }
while(!Empty_SeqStack(p)) {
Pop_SeqStack(p,&y); printf(\ } }
void main() {
int M,t;
printf(\ scanf(\
printf(\ scanf(\ conversion(M,t); getch(); }
13.编写一算法完成瑟夫生死者游戏。(8分)
瑟夫生死者游戏的描述:N个旅客同乘一条船,因为严重超载,加上风浪大,危险万分;因此船长告诉乘客,只有将全船一半的旅客投入海中,其余人才能幸免遇难。无奈,大家只得同意这种办法,并拟定N个人围成一圈,由第一个人数起,依次报数,数到第r人,便把他投入海中,然后再从他的下一个人数起,数到第r人,再将他仍进海里,如此循环的进行,直到剩下N/2个乘客为止。问哪些位置是将被扔下大海的位置。
typedef struct node {
int data;
struct node *next; }ListNode,*LinkList;
LinkList CreateList(int n);
void DeleteNode(LinkList L,int n,int k); void PrintList(LinkList L); main() {
int n,k; LinkList H;
printf(\请输入总人数:\ scanf(\
printf(\请输入报数上限:\ scanf(\ H=CreateList(n);
34
DeleteNode(H,n,k); PrintList(H); getch(); }
LinkList CreateList(int n) {
int i;
LinkList L=NULL; ListNode *s,*R=NULL; for(i=1;i<=n;i++) {
s=(ListNode *)malloc(sizeof(ListNode)); s->data=i;
if(L==NULL) L=s; else R->next=s; R=s; }
if(L!=NULL) R->next=L; return L; }
void DeleteNode(LinkList L,int n,int k) {
int i,j=0;
ListNode *q,*p=L;
printf(\不幸投入大海的有:\ for(i=1;i<=n/2;i++) {
for(j=1;j
p->next=q->next;
printf(\ if(i==0) printf(\ free(q); p=p->next; }
printf(\ L=p; }
void PrintList(LinkList L) {
35
…… 此处隐藏:952字,全部文档内容请下载后查看。喜欢就下载吧 ……相关推荐:
- [学前教育]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卷精彩试题(有问题
- 普通心理学笔记




