劲舞团歌曲列表-现金管理暂行条例实施细则
精品文档
数据结构考试题参考答案
1
、设顺序表
L
中的数据元素递增有序。试写一算法,将数据元素
x
插入到顺序表
L的适当
位置,以保持该表的有序性。
解:存储结构为:
typedef
struct
SeqList
{ DataType
*data;
int MaxLen;
int
len;
}SeqList;
算法如下:
void insertLx(SeqList &L, DataType x)
{ if(==) return;
int i=-1;
while(i>=0 && x<[i])
{ [i+1]=[i]; i=i-1;}
[i+1]=x; ++;
}
2
、试写一个算法,在带头结点的单链表
L
的元素
x< br>前插入一个结点
y
。
解:存储结构如下:
typedef
struct
Lnode
{ElemType data;
struct Lnode *next;
}Lnode,
*LinkList;
算法如下:
void
insert_y_before_x(LinkList
L, ElemType
x, ElemType y)
{ Lnode
*q,
*p=L;
while(p->next && p->next->data!=x)
p=p->next;
//
找
x
的前驱结点
p;
if(!p->next) return;
//
若不存在结点
x
,则返回;
q=new Lnode;
q->data=y; q->next=p->next;
p->next=q;
}
3
、试写一个算法,统计带头指针的单链表
L
的元素个数。
解:存储结构如下:
typedef
struct
Lnode
{ElemType data;
struct Lnode *next;
}Lnode,
*LinkList;
算法如下:
int length(LinkList L)
{ int len=0;
Lnode *p=L;
while(p) { len++;
p=p->next; }
精品文档
精品文档
return
len;
}
注:如果单链表是带头结点的,则算法如下:
int length(LinkList L)
{ int len=0;
Lnode *p=L->next;;
while(p) { len++;
p=p->next; }
return
len;
} 4
、试写一个算法,在带头结点的单链表
L
的第
k
个结点后插入 一个结点
x
。
解:
存储结构如下:
typedef
struct
Lnode
{ElemType data;
struct Lnode *next;
}Lnode,
*LinkList;
算法如下:
void
insert_after_k( LinkList L,
int
k,
ElemType
x)
{ if(k<0) return;
Lnode *q, *p=L;
int i=0;
while(p && i
p=p->next; }
//
找到第
k
个结点
p;
if(!p) return;
//
若不存在第
k
个结点,则返回;
q=new Lnode;
q->data=x;
q->next=p->next;
p->next=q;
}
注:如果是在
L
的第
k
个结点前插入一个结点,则找第
k-1个结点
p
,然后插入。
5、试写一个算法,在带头结点的单链表L中删 除所有的数据元素为
x
的结点。
解:
存储结构如下:
typedef
struct
Lnode
{ElemType data;
struct Lnode *next;
}Lnode,
*LinkList;
算法如下:
void
Delete_all_x(LinkList L, Elemtype x)
{ Lnode *p, *q;
p=L;
while(p)
{ if(p->next && p->next->data==x)
{q=p->next;
p->next=q->next;
delete q; }
else
p=p->next;
}
}
注意:要删除所有的值为
x
的结点。
精品文档
精品文档
6、
假设一个单循环链表L的数据域 为整型,
设计一个算法,
求该表中所有结点的数据之和。
解:
存储结构如下:
typedef
struct
Lnode
{ElemType data;
struct Lnode *next;
}Lnode,
*LinkList;
假设L带头结点,且L指向头结点,则算法如下:
int sum_Of_Data(LinkList
L)
{ int s=0;
Lnode *p=L->next;
while(p!=L) {s+=p->data;
p=p->next; }
return s; }
假设L不带头结点,且L指向循环链表中任何一个结点,则算法如下:
int sum_of_data(LinkList
L)
{ int s=0;
Lnode *p=L;
if(L)
{ s+=p->data;
p=p->next;
while(p!=L) { s+=p->data; p=p->next; }
}
return s;
}
注:以上两种情形,只要给出其中一种情形的解即可。
7、假设二叉树用二叉链表存储,设计一个算法,求二叉树的结点个数。
解:存储结构如下:
typedef struct bitnode
{ElemType
data;
struct bitnode *lchild,
*rchild;
}bitnode, *bitree;
算法如下:
int nodes(bitree T)
{ if(!T) return 0;
else
return (1+nodes(T->lchild)+nodes(T->rchild));
}
8、写一个算法,建立二叉树的二叉链表。
解:存储结构如下:
typedef char
ElemType;
typedef struct bitnode
{ElemType
data;
struct bitnode *lchild,
*rchild;
}bitnode, *bitree;
算法如下:
void creat_bitree(bitree &T)
{ //
按扩展的先序序列输入结点,输入‘#’表示空。
精品文档
劲舞团歌曲列表-现金管理暂行条例实施细则
劲舞团歌曲列表-现金管理暂行条例实施细则
劲舞团歌曲列表-现金管理暂行条例实施细则
劲舞团歌曲列表-现金管理暂行条例实施细则
劲舞团歌曲列表-现金管理暂行条例实施细则
劲舞团歌曲列表-现金管理暂行条例实施细则
劲舞团歌曲列表-现金管理暂行条例实施细则
劲舞团歌曲列表-现金管理暂行条例实施细则
本文更新与2021-01-17 18:53,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/524470.html