77范文网 - 专业文章范例文档资料分享平台

第二章 线性表(7)

来源:网络收集 时间:2019-06-17 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

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;jnext; q=p->next;

p->next=q->next;

printf(\ if(i==0) printf(\ free(q); p=p->next; }

printf(\ L=p; }

void PrintList(LinkList L) {

35

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库第二章 线性表(7)在线全文阅读。

第二章 线性表(7).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/662160.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: