合肥师范学院数据结构复习资料

合肥师范学院数据结构复习资料
合肥师范学院数据结构复习资料

概论

数据是信息的载体,是指能够输入到计算机中,并被计算机识别、存储和处理的符号的集合。

数据元素是数据中具有独立意义的个体。在有些场合下,也称为元素、记录、结点、定点等。

字段是对元素的详细描述,通常情况下,元素可能包含多个字段。

数据结构是指组成数据的元素之间的结构关系。

逻辑结构(线性、树形、图、集合)

算法是对特定问题求解步骤的一种描述,是指令的有限序列,其中每一条指令表示一个或多个操作。

算法的五个特性:有穷性、确定性、可行性、输入及输出。

计算时间复杂度:

①for(i=1;i

②for(i=1;i

for(j=1;j<=n;j++){x++;} O(m*n)

③i=1

while (i

线性表

定义:线性表L是由n个元素a1,a2,…,a n组成的有限序列,记做L=(a1,a2,…,a n),其中n≥0为表长度;当n=0时L为空表,记做L=()。

特点:线性表中每个元素最多有一个直接前驱和一个直接后继。

基本运算:

①初始化线性表initial_list(L):建立线性表的初始结构,即建立空表。

②求表长度list_length(L):即求表中的元素个数。

③按序号取元素get_element(L,i):取出表中序号为i的元素。

④按值查询list_locate(L,x):取出指定值为x的元素,若存在该元素,则返回其地址;否则,返回一个不存在的地址值或标记。

⑤插入元素list_insert(L,i,x):在表L的第i个元素位置上插入值为x的元素。

⑥删除元素list_selete(L,i):删除表L中序号为i的元素。

串是由有限个字符a1,a2,a3,…,a n组成的序列,记做

S=“a1,a2,a3,…,a n”。

串的5个基本算法和2个常用算法:

①赋值运算(S=S1):将一个串(值)S1传送给串S。

②求长度运算str_length(S):返回串S的长度值。

③连接运算(S1+S2):将串S1和S2连接成一个新串。

④求子串函数substr(S,i,j):返回串S中从第i个元素开始的j个元素所组成的子串。

⑤串比较:比较两个串的大小。

⑥插入运算str_insert(S,i,S1):将子串S1插入到串S的从第i个字符开始的位置上。

⑦删除算法str_delete(S,i,j):删除串S中从第i个字符开始的j个字符。

数组

数组的顺序存储

①以行序为主序的存储(即行优先次序)

②以列序为主序的存储(即列优先次序)

栈是只能在一端进行插入和删除的线性表。

栈具有后进先出或先进后出的特性。

栈的基本算法:

①初始化栈init_stack(S):设置栈S为空栈。

②判断栈是否为空stack_empty(S):若栈S为空,返回FALSE。

③取栈顶元素值stack_top(S,x):若栈S不空,则将栈S的栈顶元素的值送变量x中,否则应返回出错信息。

④入栈push_stack(S,x):将值为x的元素插入到栈S的栈顶。若插入前的栈已满,不能入栈时,应报出错信息。

⑤出栈pop_stack(S):若栈S不空,删除栈S的栈顶元素,否则应返回出错信息。

⑥判断栈是否已满stack_full(S):栈S满时,返回TRUE;否则,返回FALSE。

队列

队列是只能在一端插入、另一端删除的线性表。

队列的运算

①初始化队列init_queue(Q):设置队列Q为空。

②判断队列是否为空queue_empty(Q):若队列Q为空,返回TRUE;否则返回FALSE。

③取队头元素queue_front(Q,x):若队列Q不空,求出队列Q的队头元素置于x中,否则,返回出错信息。

④入队En_queue(Q,x):将值为x的元素插入到队列Q中。若插入前队列已满,不能入队时,应报出错信息。

⑤出队Out_queue(Q,x):若队列Q不空,删除队头,并将该元素的值置于x中,否则,应返回“下溢出”错误信息。

⑥判断队列是否已满queue_full(Q):若Q已满,返回TRUE;否则返回FALSE。

树T是n个结点构成的有限集合(n>0),其中有一个结点叫根,其余结点可划分为m个互不相交的子集

T1,T2,…,T m(m≥0),并且这m个子集本身又构成树,称为T的子树。

树的表示形式:

①图形表示法

②嵌套集合表示法

③凹入表表示法

④广义表表示法

树的运算:

①初始化树initial_tree(T):简历数或森林T的初始结构。

②插入子树insert_tree(T,S):将以S为根的子树作为T的第一个子树插入到树中。

③插入兄弟结点insert_sibling(T,S):将以结点S为根的树作为T的兄弟子树插入到树中。

④查询根结点rootof(T):查询结点T所在树的根结点。

⑤查询父结点fatherof(T):查询结点T的父结点。

⑥查询孩子结点childof(T):查询结点T的所有或某个孩子结点。

⑦查询兄弟结点siblingof(T):查询结点T的所有或某个兄弟结点。

二叉树T是n个结点的有限集合,其中n≥0。当n=0时,T为空树,否则,其中有一个结点为根结点,其

余结点划分为两个互不相交的子集T L、T R,并且T L、T R也构成二叉树,分别称为左右子树。

形态个数计算公式:1/(n+1)·C n2n

二叉树的性质:

性质1:在二叉树的第i层上的结点数≤2i-1(i>0)。

性质2:深度为k的二叉树的结点数≤2k-1(k>0)。

性质3:对任意一颗非空的二叉树T如果其叶子数为n0,度为2的结点数为n2,则有关系式n0=n2+1成立。性质4:有n个结点的完全二叉树(n>0)的深度为?log2n?+1.(?x?表示不大于x的最大整数)

性质5:在编号的完全二叉树中,各节点的编号之间的关系为:

①如果编号为i的结点存在左孩子结点,则其左孩子结点的编号为2i。

②如果编号为i的结点存在右孩子结点,则其右孩子结点的编号为2i+1。

③如果编号为i的结点存在父结点,则其父结点的编号为?i/2?。

先序遍历:先访问根结点,再遍历其左、右子树。

中序遍历:访问根结点在遍历其左、右子树之间。

后序遍历:访问根结点在遍历其左、右子树之后。

排序

排序是将数据表调整为按关键字从小到大或从大到小的次序排列的过程。

分类方法:

①增排序和减排序:

②内部排序和外部排序:数据表中的所有数据是否在内存中。

③稳定排序和不稳定排序:关键字相同的两个元素的相对次序是否变化。

④排序的基本方法:插入排序、交换排序、选择排序、归并排序和基数排序。

直接插入排序:将整个待排序子表看做左右两部分,其中左边为有序区,右边为无序区,整个排序过程就

是将右边无序区中的元素逐个插入到左边的有序区中,已构成新的有序区。稳定;一个存储空间;循环n-1次(①开始有序:比较和移动元素次数为(n-1)和2(n-1),O(n)。②逆序:比较和移动元素次数为(n+2)(n-1)/2和(n+4)(n-1)/2,O(n2))。

希尔排序:将待排序列划分为若干组,在每组内进行直接插入排序,以使整个序列基本有序,然后再对整个序列进行直接插入排序。不稳定;各趟O(n),需要log2n趟,总为O(nlog2n)。

冒泡排序:从一端开始,逐个比较相邻的两个元素,发现倒序即交换。简单算法O(n2)。改进算法稳定(①

初始正序,比较次数为n-1次,交换0,O(n)。②初始逆序,第i趟比较与交换均为(n-i),整个比较和交换为n(n-1)/2,O(n2)。

快速排序:首先,选定一个元素作为中间元素,然后将表中所有元素与该中间元素相比较,将表中比中间

元素小的元素调到表的前面,将比中间元素大的元素调到后面,再将中间数放在这两部分之间以作为分界点,这样便得到一个划分。然后再对左、右两部分分别进行快速排序。不稳定;时间复杂度(①理想情况下O(nlog2n)。②另一极端情况下O(n2)。③一般情况下O(knlog2n),其中k为某常数。)

选择排序:在每一趟排序中,在待排序子表中选出关键字最小或最大的元素放在其最终位置上。对深度为

k的堆,比较至多2(k-1)次,而有n个结点的完全二叉树的深度log2n+1,调整堆比较不超过log2(n-1)+log2(n-2)+…+log22,建初始堆比较不超过4n,O(nlog2n)

查找

查找:对给定的一个关键字的值,在数据表中搜索出一个关键字的值等于该值的记录或元素。

查找长度:查找一个元素所进行的关键字的比较次数。常以平均查找长度、最大查找长度等来衡量查找算

法的总的时间性能。

折半查找:如果查找表A已经按关键字递增(减)有序,此处不妨设为递增数列有序,则可采用二分查找

来查找。

二叉排序树是一棵二叉树,或者为空,或者满足如下条件:

①若左子树不空,则左子树上所有结点的值均小于根的值。

②若右子树不空,则右子树上所有结点的值均大于或等于根的值。

③其左、右子树均为二叉排序树。

平衡二叉树是一棵二叉树,或者为空,或者满足如下条件:

①左右子树深度之差的绝对值不超过1。

②左右子树都是平衡二叉树。

结点的平衡因子 = 结点的左子树深度 - 结点的右子树深度

平衡化:LL型调整(①将A的左孩子B提升为新的根结点。②将原来的根结点A降为新的根结点B的右孩

子。③各子树按照大小关系连接);RR型调整(①将A的右孩子B提升为新的根结点。②将原来的根结点A降为新的根结点B的左孩子。③各子树按照大小关系连接。);LR型调整(①将C提升为新的根结点。②将原来的根结点A降为新的根结点C的右孩子。③各子树按照大小关系连接。);RL型调整(①将C提升为新的根结点。②将原来的根结点A降为新的根结点C的左孩子。③各子树按照大小关系连接。)

直接插入排序的算法

void insert_sort(elementtype A[n+1])

{

for(i=2;i<=n;i++)

{ temp=A[i];

j=i-1;

while(A[j].key>temp.key)

{ A[j+1]=A[j];j=j-1;}

A[j+1]=temp;

}

}

带有监视哨的代码

void insert_sort(elementtype A[n+1])

{

for(i=2;i<=n;i++)

{ A[0]=A[i];

j=i-1;

while(A[j].key>A[0].key)

{ A[j+1]+A[j];j=j-1;}

A[j+1]=A[0];

}

}

设顺序表L是一个递增有序表,试写一个算法,将x插入L中,并使L仍是一个有序表。

void InsertIncreaseList(Sequenlist *L,Datatype x)

{ int i;

for(i=0;ilength && L->data[i]

InsertList(L,x,i);

}

已知L1和L2分别指向两个单链表的头结点,且已知其长度分别为m和n。试写一个算法将这两个链表连接在一起。

LinkList Link(LinkList L1,LinkList L2)

{ ListNode *p, *q;p=L1;q=L2;

while(p->next)p=p->next;

p->next=q->next;

return L1;

希尔排序的算法

void shell_sort(elementtype A[n+])

{

dh=d1;

while(dh>=1)

{ for(i=dh+1;i<=n;i++)

{

temp=A[i];

j=i-dh;

while(j>dh && A[j].key>temp.key)

{ A[j+dh]=A[j];

j=j-dh;

}

A[j+dh]=temp;

}

dh=db/2;

}

}

冒泡排序的算法

void bubble_sort(elementtype A[n+1])

{

for(i=1;i

for(j=n;j>=i+1;j--)

if(A[j].key

A[j]<==>A[j-1];

}

改进:提高时间性能

void bubble_sort(elementtype A[n+])

{ i=1;

do

{ exchanged=FALSE;

for(j=n;j>=i+1;j--)

if(A[j].key

{ A[j]<==>A[j-1];exchanged=TRUE;}

i++;

} while(i<=n-1 && exchanged==TRUE);

}

快速排序的算法

划分算法:

void partition(elementtype A[],int s,int t,int& cutpoint) { x=A[s];

i=s;j=t;

while(i!=j)

{ while(ix.key) j--;

if(i

while(i

if(i

}

A[i]=x;

cutpoint=i;

}

快排算法:

void QuickSort(elementtype A[n],int s,int t)

{ int i;

if(s

{ partition(A,s,t,i);

QuickSort(A,s,i-1);

QuickSort(A,i+1,t);

}

}

选择排序的算法:

直接选择排序

void select_sort(elementtype A[n])

{ for(i=0;i

{ min=i;

for(j=i+1;j

if(A[j].key

if(min!=i)A[min]<==>A[i];

}

}

堆排序

堆排序的筛选算法

void sift(elementtype A[],int k,int m)

{ x=A[k];finished=FALSE;

i=k;j=2*i;

while(j<=m && ! finished)

{ if(j

if(x.key>=A[j].key) finished=TRUE;

else{ A[i]=A[j];

i=j;j=2*j;

}

}

A[i]=x;

}

堆排序算法

void heap_sort(elementtype A[],int n)

{ for(i=n/2;i>=1,i--)

sift(A,i,n);

for(i=n;i>=2;i--)

{ A[i]<==>A[1];

sift(A,1,i-1);

}

}

以二叉链表为存储结构,编写一算法交换各结点的左右子树。

Btree swaptree(btree b)

{ btree t,t1,t2;

if(b==NULL)

t=NULL;

else

{ t (btree)malloc(sizeof(btree));

t->data=b->data;

t1=swaptree(b->Lchild);

t2=swaptree(b->Rchild);

t->Lchild=t2;

t->Rchild=T1;

}

return(t);

}

用顺序表将线性表就地逆置

void ReverseList( Seqlist *L)

{ Datatype t;

int i;

for(i=0;ilength/2;i++)

{t=L->data[i];

L->data[i]=L->data[L->length-1-i];

L->data[L->length-1-i]=t;

}

}

用单链表将线性表就地逆置

LinkList ReverseList( LinkList head)

{ ListNode *p,*q;

if( head->next && head->next->next)

{ p=head->next;q=p->next;p->next=NULL;

while(q)

{ p=q;q=q->next;p->next=head->next;

head->next=p;

}

return head;

}

return head;

}

归并排序的算法

void merge(elementtype A[],elementtype B[],elementtype C[],int la,int lb,int &lc) { int ia=1,ib=1,ic=1;

while(ia<=la && ib<=lb)

if(A[ia]<=B[ib])

C[ic++]=A[ia++];

else C[ic++]=B[ib++];

while(ia<=la)

C[ic++]=A[ia++];

while(ib<=lb)

C[ic++]=B[ib++];

}

顺序查找算法

int seq_search(elementtype A[],int n,keytype x)

{ i=n;A[0].key=x;

while(A[1].key!=x)i--;

return i;

}

折半查找的算法

int bin_search(elementtype A[],int n,keytype x)

{ int mid,low=0,high=n-1;

while(low<=high)

{ mid=(low+high)/2;

if(x==A[mind].key) return mid;

else if(x

else low=mid+1;

}

return -1;

}

二分查找的递归算法

int bin_search(elementtype A[ ] , int low , int high, keytype x) { int mid;

if(low>high)return-1;

else{ mid=(low+high)/2;

if(x==A[mid].key)ruturn mid;

else if(x

return bin_search(A,low,mid-1,x);

else return bin_search(A,mid+1,high,x);

}

}

二叉排序树的算法

非递归算法

Bnode * bst_search(Bnode * T,keytype x)

{ Bnode * P=T;

while(P!=NULL)

if(x==P->key) return P;

else if(xkey) P=P->lchild;

else P=P->rchild;

return P;

}

递归算法

Bnode * bst_search(Bnode * T,keytype x)

{ if(T==NULL || t->key==x)

return T;

else if(xkey)

return bst_search(T->lchild,x);

else return bst_search(T->rchild,x);

}

二叉排序树中插入结点的实现

void insert(Bnode * &T,Bnode *S)

{ if(T==NULL)

T=S;

else if(S->keykey)

insert(T->lchild,S);

else insert(T->rchild,S);

}

二叉排序树的构造

void create_bst(Bnode * &T);

{ Bnode * u; elementtype x;

T=NULL; cin>>x;

while(x!=End_of_Num)

{ u=new Bnode; u->data=x;

u->lchild=NULL;u->rchild=NULL;

insert(T,u);

cin>>x;

}

}

假设在长度大于1的单循环链表中,既无头结点也无指针。s为指向链表中某个结点的指针,试编写算法删除结点*s的直接前驱结点。

void DeleteNode(ListNode *s)

{ ListNode *p,*q;

p=s;

while(p->next!=s)

{ q=p;p=p->next;}

q->next=s;free(p);

}

输出二叉树T的所有结点的值

void output(Bitree T)

{ if (T)

{ countleaf(T->child);

cout<data;

countleaf(T->rchild, n);

}

}

求一棵二叉树T的叶子结点数目

void countleaf(Bitree T,int &n)

{ if (T)

{ countleaf(T->child, n);

if (!T->lchild &&!T->rchild)n++;

countleaf(T->rchild, n);

}

}

求二叉树的深度

void depth(Bitree T)

{ if (!T) return 0;

else return max(high(T->lchild),high(T->rchild))+1; }

输入一个二叉树的先序序列,构造二叉链表。

void create(Bitree &T )

{ cin>>ch;

if (ch=='#') T=NULL;

else { T=new Bnode;

T->data=ch;

create(T->lchild );

create(T->rchild );

}

}

先序遍历的非递归算法:

#define maxsize 100

typedef struct

{ Bitree Elem[maxsize];

int top;

}SqStack;

void PreOrderUnrec(Bitree t)

{ SqStack s;

StackInit(s);

p=t;

while(p!=null || ! StackEmpty(s))

{ while(p!=null)

{ visite(p->data);

push(s,p);

p=p->lchild;

}

if(! StackEmpty(s))

{

p=pop(s);

p=p->rchild;

}

}

}

中序遍历的非递归算法:

#define maxsize 100

typedef struct

{ Bitree Elem[maxsize];

int top;

}SqStack;

void InOrderUnrec(Bitree t)

{ SqStack s;

StackInit(s);

p=t;

while(p!=null || ! StackEmpty(s)) { while(p!=null)

{ push(s,p);

p=p->rchild;

}

if(! StackEmpty(s))

{

p=pop(s);

visite(p->data);

p=p->lchild;

}

}

}

后中序遍历的非递归算法:

#define maxsize 100

typedef enum{L,R} tagtype;

typedef struct

{ Bitree ptr;

tagtype tag;

}stacknode;

typedef struct

{ stacknod Elem[maxsize];

int top;

}SqStack;

void PostOrderUnrec(Bitree t)

{ SqStack s;

stacknode x

StackInit(s);

p=t;

do

{ while(p!=null)

{ x.ptr=P;

x.tag=L;

push(s,x);

p=p->lchild;

}

while(! StackEmpty(s) && s.Elem[s.top].tag==R)

{ x=pop(s);

p=x.ptr;

visite(p->data);

}

if(! StackEmpty(s))

{

s.Elem[s.top].tag=R;

p=s.Elem[s.top].ptr->rchild;

}

}while(! StackEmpty(s));

}

一个线性表中的元素为正整数或负整数,设计一个算法,将正整数和负整数分开,使线性表的前部为负整数,后部为正整数,不要求对他们排序,但要求尽量减少交换次数。

void ReSort(Seqlist R)

{ int i=1,j=n;

while(i

{ while(i

i++;

while(i=0)

j--;

R[0]=R[i];

R[i++]=R[j];R[j--]=R[0];

}

}

编写一个直接插入排序算法,使得查找插入位置时不是采用顺序的方法而是采用二分的方法。

void BinInSort(SeqList R)

{ int i,j,low,high;

for(i=2;i<=n;i++)

{ low=1;high=i-1;R[0]=R[i];

while(low<=high)

{ mid=(low+high)/2;

if(R[mid].key>R[0].key)

high=mid-1;

else

low=mid+1;

}

for(j=i-1;j>=low;j--)

R[j+1]=R[j];

R[j]=R[0];

}

}

以单链表为存储结构,写一个直接选择排序算法。

# define int KeyType

typedef struct node{

keyType key;

OtherInfoType info;

struct node * next;

}RecNode;

typedef RecNode * LinkList;

void selectsort(linklist head)

{ RecNode *p, *q, *s;

if(head->next)&&(head->next->next)

{ p=head->next;

while(p->next)

{ q=p->next;s=p;

while(q)

{ if(q->keykey)

s=q;

q=q->next;

}

p=p->next;

}

}

}

已知两个单链表中的元素递增有序,试写一算法将这两个有序表归并成一个递增有序的单链表。

void mergsort(LinkList la,LinkList lb,LinkList lc)

{ RecNode *p, *q, *s, *r;

lc=la;

p=la;

q=lb->next;

while(p->next) && (q)

if(p->next->key<=q->key)

p=p->next;

else

{ s=q;q=q->next;

s->next=p->next;p->n ext=s;

p=s;

if(! p->next)

p->next=q;

free(lb);

}

编写一个过程,对一个n×n矩阵,通过行交换,使其每行元素的平均值按递增顺序排列。

void Translation(float *matrix,int n)

{ int i,j,k,l

float *p, *pi, *pk ;

for(i=0;i

{ sum=0.0;pk=matrix+i * n;

for(j=0;j

{ sum+ = *(pk);pk++;}

* (p+i)=sum;

}

for(i=0;i

{ min= *(p+i);k=i;

for(j=i+1;j

if(p[j]

{ k=j;min=p[j];}

if(i!=k)

{ pk=matrix+n*k;

pi=matrix+n*i;

for(j=0;j

{ sum= *(pk+j);

*(pk+j)= *(pi+j);

*(pi+j)=sum;

}

sum=p[i];p[i]=p[k];p[k]=sum;

}

}

}

电大考试数据结构(本)试题集附答案

数据结构(本)期末综合练习 2017年5月 有得看就不难 综合练习一 一、单项选择题 1.设有头指针为head的带有头结点的非空单向循环链表, 指针p指向其尾结点, 要删除头结点,并使其仍为单向循环链表,则可利用下述语句head =head->next ;()。 A.p =head; B.p=NULL; C.p->next =head; D.head=p; 2.在一个单链表中p指向结点a, q指向结点a的直接后继结点b,要删除结点b,可执 行()。 A.p->next=q->next ; B.p=q->next; C.p->next=q; D.p->next=q; 3. 以下说法不正确的是 A. 线性表的链式存储结构不必占用连续的存储空间 B.一种逻辑结构只能有唯一的存储结构 C. 一种逻辑结构可以有不同的存储结构 D.线性表的顺序存储结构必须占用连续的存储空间 4.在一个单向链表中,在p所指结点之后插入一个s所指的结点时,可执行();和 p->next=s; A.p= s; B. p->next=s->next; C.p=s->next; D. s->next=p->next; 5.把数据存储到计算机中,并具体体现( )称为物理结构。 A. 数据元素间的逻辑关系 B.数据的处理方法 C.数据的性质 D.数据的运算 6.设有一个长度为23的顺序表,要删除第8个元素需移动元素的个数为()。 A.16 B.14 C.15 D.13 7.链表所具备的特点之一是()。 A.可以随机访问任一结点 B.需要占用连续的存储空间 C.插入元素的操作不需要移动元素 D.删除元素的操作需要移动元素 8.设一棵有8个叶结点的二叉树,度数为1的结点有3个,则该树共有()个结点。 A.20 B.18 C.17 D.16 9.图状结构中数据元素的位置之间存在()的关系。 A.一对一 B.多对多 C.一对多 D.每一个元素都有一个直接前驱和一个直接后继10.一棵具有5层的完全二叉树,最后一层有4个结点,则该树总共有()个结点。 A.14 B.15 C.19 D.18 11.元素15,9,11,13按顺序依次进栈,则该栈的不可能输出序列是() (进栈出栈可以交替进行)。 A.13,11,9,15 B.15,9,11,13 C.13,11,15,9 D.9, 15,13,11 1

国家开放大学,数据结构(本),形考作业2

国家开放大学,数据结构(本),形考作业2 1 . 若让元素1,2,3依次进栈,则出栈顺序不可能为( A )。 选择一项: A. 3,1,2 B. 2,1,3 C. 1,3,2 D. 3,2,1 2.一个队列的入队序列是1,2,3,4。则队列的输出序列是()。 选择一项: A. 3,2,4,1 B. 1,4,3,2 C. 1,2,3,4 D. 4,3,2,1 3.向顺序栈中压入新元素时,应当()。 选择一项: A. 先存入元素,再移动栈顶指针 B. 先移动栈顶指针,再存入元素 C. 同时进行 D. 先后次序无关紧要 4.在一个栈顶指针为top的链栈中,将一个p指针所指的结点入栈,应执行()。 选择一项: A. p->next=top->next;top->next=p; B. p->next=top->next;top=top->next; C. top->next=p; D. p->next=top;top=p; 5.在一个栈顶指针为top的链栈中删除一个结点时,用 x保存被删结点的值,则执行()。选择一项: A. x=top;top=top->next; B. x=top->data; C. top=top->next;x=top->data; D. x=top->data;top=top->next; 6.判断一个顺序队列(最多元素为m)为空的条件是()。 选择一项: A. rear=m B. front==rear+1 C. front==rear D. rear==m-1 7. 判断一个循环队列为满的条件是()。 选择一项: A. (rear+1)%MaxSize==front B. front==rear+1 C. rear=MaxSize D. rear%MaxSize= =front 8. 判断栈满(元素个数最多n个)的条件是()。

数据结构导论试题和部分答案

全国2012年1月数据结构导论试题课程代码:02142 一、单项选择题(本大题共15小题,每小题2分,共30分) 1.结点按逻辑关系依次排列形成一条“锁链”的数据结构是( )A.集合 B.线性结构 C.树形结构 D.图状结 构 2.下面算法程序段的时间复杂度为( ) for ( int i=0; i

02142数据结构导论201604

2016年4月高等教育自学考试全国统一命题考试 数据结构导论试卷 (课程代码 02142) 本试卷共6页。满分l00分,考试时间l50分钟。 考生答题注意事项: 1.本卷所有试题必须在答题卡上作答。答在试卷上无效,试卷空白处和背面均可作草稿纸。2.第一部分为选择题。必须对应试卷上的题号使用2B铅笔将“答题卡”的相应代码涂黑。3.第二部分为非选择题。必须注明大、小题号,使用0.5毫米黑色字迹签字笔作答。4.合理安排答题空间,超出答题区域无效。 第一部分选择题(共30分) 一、单项选择题(本大题共l5小题。每小题2分,共30分) 在每小题列出的四个备选项中只有一个是符合题目要求的,请将其选出并将“答题卡”的相应代码涂黑。错涂、多涂或未涂均无分。 1.一个公司的组织机构是1名公司经理领导若于名部门负责人、每个部门负责人领导若干名部门员工,则适合于描述该公司组织机构的逻辑结构是 A.线性表 B.队列 C.树 D.图 2.计算n!(整数n≥0)的递归算法是:int Factorial(int n){if(n= =o)return l;else return n*Factorial(n--1);}其时闯复杂度为 A.0(n) B.0(log2n) C.O(n0) D.O(n2) 3.将一个由指针q指向的结点插在单链表中由指针P所指向的结点之后的操作是 A.p=q; B.p--:>next=q; C.q一>next=p--:>next;p-->next=q; D.p一>next—q;q-->next—p--:>next; 4. 设初始栈为空,s表示人栈操作,x表示出栈操作,则合法的操作序列是 A.sxxssxxs B.ssxsxxxs C.ssxxxssx D.sssxxxsx 5.将递归形式描述的算法改写为功能等价的非递归形式描述的算法,通常应设置的辅助结构是 A.顺序表 B.单链表C.栈 D.队列 6.设长度为n的队列用单循环链表表示(假设表尾结点为当前队列的队尾元素),若只设头指针,则入队操作、出队操作的时间复杂度分别为 A.O(n)、O(1) B.O(1)、O(1) C.O(1)、O(n) D.0(n)、0(n) 7.若采用顺序存储(一维数组)结构存储一棵如题7图所示的二叉树,根结点1的下标为l,剥结点4的下标为 A.4 B.5 C.6 D.7 8.按层序(自顶向下、从左到右)遍历二叉树时需借助队列作辅助结构。对高度为3的满二叉树进行层序遍历时,队列中所出现的元素个数最多是

电大数据结构(本)形考作业1-阶段性学习测验1答案

"题目1:把数据存储到计算机中,并具体体现数据元素间的逻辑结构称为()。: 逻辑结构 ; 算法的具体实现 ; 给相关变量分配存储单元 ; 物理结构" "题目2:下列说法中,不正确的是()。 : 数据元素是数据的基本单位 ; 数据项可由若干个数据元素构成 ; 数据项是数据中不可分割的最小可标识单位 ; 数据可有若干个数据元素构成" "题目3:一个存储结点存储一个()。 : 数据类型 ; 数据元素 ; 数据结构 ; 数据项" "题目4:数据结构中,与所使用的计算机无关的是数据的()。 : 物理结构 ; 逻辑结构 ; 存储结构 ; 物理和存储结构" "题目5:在线性表的顺序结构中,以下说法正确的是()。 : 数据元素是不能随机访问的 ; 逻辑上相邻的元素在物理位置上也相邻 ; 进行数据元素的插入、删除效率较高 ; 逻辑上相邻的元素在物理位置上不一定相邻" "题目6:对链表, 以下叙述中正确的是()。 : 插入删除元素的操作一定要要移动结点 ; 不能随机访问任一结点 ; 可以通过下标对链表进行直接访问 ; 结点占用的存储空间是连续的" "题目7:下列的叙述中,不属于算法特性的是()。 : 输入性 ; 可读性 ; 可行性 ; 有穷性" "题目8:算法的时间复杂度与()有关。 : 数据结构 ; 计算机的操作系统 ; 所使用的计算机 ; 算法本身"

"题目9:设有一个长度为n的顺序表,要在第i个元素之前(也就是插入元素作为新表的第i个元素),插入一个元素,则移动元素个数为()。 : n-i+1 ; n-i-1 ; i ; n-i" "题目10:设有一个长度为n的顺序表,要删除第i个元素移动元素的个数为()。 : n-i-1 ; n-i ; i ; n-i+1" "题目11:在一个单链表中,p、q分别指向表中两个相邻的结点,且q所指结点是p所指结点的直接后继,现要删除q所指结点,可用语句()。 : p->next=q->next ; q->next=NULL ; p->next=q ; p=q->next" "题目12:在一个单链表中p所指结点之后插入一个s所指的结点时,可执行()。 : s->next=p->next; p->next=s; ; p->next=s->next; ; p->next= s; s->next= p->next ; p=s->next" "题目13:非空的单向循环链表的尾结点满足()(设头指针为head,指针p指向尾结点)。 : p== head ; p->next==NULL ; p->next==head ; p==NULL" "题目14:链表不具有的特点是()。 : 插入删除不需要移动元素 ; 不必事先估计存储空间 ; 逻辑上相邻的元素在物理位置上不一定相邻 ; 可随机访问任一元素" "题目15:带头结点的链表为空的判断条件是()(设头指针为head)。 : head->next==head ; head->next==NULL ; head!=NULL ; head ==NULL" "题目16:在一个长度为n的顺序表中为了删除第5个元素,由第6个元素开始从后到前依次移动了15个元素。则原顺序表的长度为()。 : 19 ; 21 ; 25

自考数据结构导论

全国2014年4月高等教育自学考试 数据结构导论试题 课程代码:02142 请考生按规定用笔将所有试题的答案涂、写在答题纸上。 选择题部分 注意事项: 1.答题前,考生务必将自己的考试课程名称、姓名、准考证号用黑色字迹的签字笔或钢笔填写在答题纸规定的位置上。 2.每小题选出答案后,用2B铅笔把答题纸上对应题目的答案标号涂黑。如需改动,用橡皮擦干净后,再选涂其他答案标号。不能答在试题卷上。 一、单项选择题(本大题共15小题,每小题2分,共30分) 在每小题列出的四个备选项中只有一个是符合题目要求的,请将其选出并将“答题纸”的相应代码涂黑。错涂、多涂或未涂均无分。 1.下列几种算法时间复杂度中,最小的是( A ) A.O(log2n) B.O(n) C.O(n2) D.O(1) 2.数据的存储方式中除了顺序存储方式和链式存储方式之外,还有( D ) A.索引存储方式和树形存储方式 B.线性存储方式和散列存储方式 C.线性存储方式和索引存储方式 D.索引存储方式和散列存储方式 3.表长为n的顺序表中做删除运算的平均时间复杂度为( C ) A.O(1) B.O(log2n) C.O(n) D.O(n2) 4.顺序表中定位算法(查找值为x的结点序号最小值)的平均时间复杂度为( C ) A.O(1) B.O(log2n) C.O(n) D.O(n2) 5.元素的进栈次序为A,B,C,D,E,出栈的第一个元素为E,则第四个出栈的元素为( C ) A.D B.C C.B D.A 6.带头结点的链队列中,队列头和队列尾指针分别为front和rear,则判断队列空的条件为( A ) A.front==rear B.front!=NULL C.rear!==NULL D.front==NULL 7.深度为5的二叉树,结点个数最多为( A )

自考数据结构导论20051年10月试卷

全国2005年10月高等教育自学考试 数据结构导论试题 课程代码:02142 一、单项选择题(本大题共15小题,每小题2分,共30分) 在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。 1.若要描述数据处理的变化过程,其正确的次序应为( ) A.处理要求、基本运算和运算、算法 B.处理要求、算法、基本运算和运算 C.基本运算和运算、处理要求、算法 D.算法、处理要求、基本运算和运算 2.从运算类型角度考虑,属于引用型的运算是( ) A.插入、删除 B.删除、修改 C.查找、读取 D.查找、删除 3.若在长度为n的顺序表中插入一个结点,则其结点的移动次数( ) A.最少为0,最多为n B.最少为1,最多为n C.最少为0,最多为n+1 D.最少为1,最多为n+1 4.在一个单链表中,若p所指结点是q所指结点的前驱结点,则在结点p、q之间插入结点s的正确操作是( ) A.s->next=q;p->next=s->next B.p->next=q;p->next=s C.s->next=q->next;p->next=s D.s->next=q->next;p->next=s->next 5.若有一串数字5、6、7、8入栈,则其不可能 ...的输出序列为( ) A.5、6、7、8 B.8、7、6、5 C.8、7、5、6 D.5、6、8、7 6.FORTRAN语言对数组元素的存放方式通常采用( ) A.按行为主的存储结构 B.按列为主的存储结构 C.按行或列为主的存储结构 D.按行和列为主的存储结构 7.树是n个结点的有穷集合,( ) A.树的结点个数可以为0,此时称该树为空树 B.树至少含有一个根结点,不能为空 C.树至少含有一个根结点和一个叶子结点 D.树至少含有一个根结点和两个叶子结点 8.深度为k的二叉树至多有( ) A.2k个叶子 B.2k-1个叶子 C.2k-1个叶子 D.2k-1-1个叶子 9.具有10个顶点的有向完全图应具有( ) 浙02142# 数据结构导论试题第 1 页(共 4 页)

02142数据结构导论2010年1 月份真题及答案

2010年1月高等教育自学考试全国统一命题考试 数据结构导论试题 课程代码:02142 一、单项选择题(本大题共15小题,每小题2分,共30分) 在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。 1.下述文件中适合于磁带存储的是() A.顺序文件 B.索引文件 C.散列文件 D.多关键字文件 2.某二叉树的后根遍历序列为dabec,中根遍历序列为debac,则先根遍历序列为() A.acbed B.becab C.deabc D.cedba 3.含有n个结点的二叉树用二叉链表表示时,空指针域个数为( ) A.n-1 B.n C.n+1 D.n+2 4.在一个图中,所有顶点的度数之和与图的边数的比是( ) A.1∶2 B.1∶1 C.2∶1 D.4∶1 5.长度为n的链队列用单循环链表表示,若只设头指针,则出队操作的时间复杂度为( ) A.O(1) B.O(1og2n) C.O(n) D.O(n2) 6.下述几种排序方法中,要求内存量最大的是( ) A.插入排序 B.快速排序 C.归并排序 D.选择排序 7.对n个不同值进行冒泡排序,在元素无序的情况下比较的次数为( ) A.n-1 B.n C.n+1 D.n(n-1)/2 8.对线性表进行二分查找时,要求线性表必须( ) A.以顺序方式存储 B.以链式方式存储 C.以顺序方式存储,且结点按关键字有序排列 D.以链接方式存储,且结点按关键字有序排列

9.在表长为n的顺序表上做删除运算,其平均时间复杂度为( ) A.O(1) B.O(n) C.O(nlog2n) D.O(n2) 10.当利用大小为n的数组顺序存储一个队列时,该队列的最大容量为( ) A.n-2 B.n-1 C.n D.n+1 11.有关插入排序的叙述,错误的 ...是( ) A.插入排序在最坏情况下需要O(n2)时间 B.插入排序在最佳情况可在O(n)时间内完成 C.插入排序平均需要O(nlog2n)时间 D.插入排序的空间复杂度为O(1) 12.有关树的叙述正确的是( ) A.每一个内部结点至少有一个兄弟 B.每一个叶结点均有父结点 C.有的树没有子树 D.每个树至少有一个根结点与一个叶结点。 13.循环队列存储在数组元素A[0]至A[m]中,则入队时的操作为( ) A.rear=rear+1 B.rear=(rear+1)%(m-1) C.rear=(rear+1)%m D.rear=(rear+1)%(m+1) 14.关于串的的叙述,不正确 ...的是( ) A.串是字符的有限序列 B.空串是由空格构成的串 C.替换是串的一种重要运算 D.串既可以采用顺序存储,也可以采用链式存储 15.对称矩阵A[N][N],A[1][1]为首元素,将下三角(包括对角线)元素以行优先顺序存储到一维数组元素T[1]至T[N(N+1)/2]中,则任一上三角元素A[i][j]存于T[k]中,下标k为( ) A.i(i-1)/2+j B.j(j-1)/2+i C.i(j-i)/2+1 D.j(i-1)/2+l 二、填空题(本大题共13小题,每小题2分,共26分) 请在每小题的空格中填上正确答案。错填、不填均无分。 16.下列程序段的时间复杂度为____________。 for(i=1;i<=n;i++) for(j=1;j<=n;j++)

全国自学考试数据结构导论试题及答案(4套)

全国2011年1月自学考试数据结构导论试题 课程代码:02142 一、单项选择题(本大题共15小题,每小题2分,共30分) 在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。 1.在顺序表中查找第i个元素,时间效率最高的算法的时间复杂度为( ) A.O(1) B.O(n) C.O(log2n) D.O(n) 2.树形结构中,度为0的结点称为( ) A.树根 B.叶子 C.路径 D.二叉树 3.已知有向图G=(V,E),其中V={V1,V2,V3,V4,V5,V6,V7},E={,,,},则图G的拓扑序列是 ( ) A.V1,V3,V4,V6,V2,V5,V7 B.V1,V3,V2,V6,V4,V5,V7 C.V1,V3,V4,V5,V2,V6,V7 D.V1,V2,V5,V3,V4,V6,V7 4.有关图中路径的定义,表述正确的是( ) A.路径是顶点和相邻顶点偶对构成的边所形成的序列 B.路径是不同顶点所形成的序列 C.路径是不同边所形成的序列 D.路径是不同顶点和不同边所形成的集合 5.串的长度是指( ) A.串中所含不同字母的个数 B.串中所含字符的个数 C.串中所含不同字符的个数 D.串中所含非空格字符的个数 6.组成数据的基本单位是( ) A.数据项 B.数据类型 C.数据元素 D.数据变量 7.程序段 i=n;x=0; do{x=x+5*i;i--;}while (i>0); 的时间复杂度为( ) A.O(1) B.O(n) C.O(n2) D.O(n3) 8.与串的逻辑结构不同的 ...数据结构是( ) A.线性表 B.栈 C.队列 D.树

《数据结构导论》考纲、试题、答案

《数据结构导论》考纲、试题、答案 一、考试说明 本课程为闭卷考试(开卷考试、上交论文、上交作品等考查类课程无考试指导)(根据课程考核实际方式选择),考试时间90分钟,考试题型包括以下题型中的三种(根据每门课程的实际确定题型及分值所占比例): 1、判断题(正确打√,错误打×,每题3分,共15分) 2、填空(每空2分,共20分) 3、选择题(每题3分,共15分) 4、名词解释(每小题4分,共20分) 5、简答题(每题6分,共30分) 备注:以上题型供参考 二、课程知识要点 第一章 ◆数据结构 ◆实例 第二章 ◆银行排队顺序存储 ◆学生健康登记表 第三章 ◆栈和队列 ◆回文 ◆杨辉三角 第四章 ◆串 ◆文本加密 第五章 ◆内部排序 ◆查找

◆二叉树 第六章 ◆树 ◆图 ◆数组 第七章 ◆文件 ◆外部排序 备注:根据教材实际章节汇总要点,突出需要掌握的重点内容 三、重点习题 1、判断题 ◆具有n 个结点的线索二叉树上,含有n+1个线索。 ◆三叉链表属于二叉树存储结构。 ◆哈夫曼树不存在度为1的结点。 ◆栈是一种对所有插入、删除操作限于在表的一端进行的线性表,是一种后进先出型结构。 ◆栈和队列的存储方式既可是顺序方式,也可是链接方式。 ◆二叉树中每个结点的两棵子树是有序的。 2、填空 ◆数据的逻辑结构指 ◆一个算法的时间复杂度 ◆单链表中,增加头结点的目的 ◆表长为0的线性表 ◆串的长度 ◆若两个串的长度相等且对应位置上的字符也相等 ◆常用的插入排序 ◆常用的处理冲突的方法 ◆常用的选择排序方法 ◆衡量一个算法的优劣主要考虑 ◆在有n个结点的二叉链表中,空链域的个数 ◆常用的选择排序方法

自考数据结构导论复习资料

数据结构导论复习 第一章概论 1.数据:凡能被计算机存储、加工处理的对象。 2.数据元素:是数据的基本单位,在程序中作为一个整体而加以考虑和处理 3.数据项:又叫字段或域,它是数据的不可分割的最小标识单位。 4.逻辑结构需要注意的几点: ①逻辑结构与数据元素本身的内容无关 ②逻辑结构与数据元素相对位置无关 ③逻辑结构与所有结点的个数无关 5.数据元素间逻辑关系是指数据元素之间的关联方式或称“领接关系”。 6.四类基本逻辑结构(集合、线性结构、树形结构和图形结构)的不同特点? 答:集合中任何两个结点之间都没有逻辑关系,组织形式松散; 线性结构中结点按逻辑关系依次排列形成一条“锁链”; 树形结构具有分支、层次特性,其形态有点像自然界中的树; 图状结构最复杂,其中的各个结点按逻辑关系互相缠绕,任何两个结点都可以领接。 7.运算是在逻辑结构层次上对处理功能的抽象

8.基本运算的含义? 答:假如是S上的一些运算的集合,是的一个子集,使得中每一运算都可以“归约”为中的一个或多个运算,而中任一运算不可归约为别的运算,则称中运算为基本运算 9.数据结构是指由一个逻辑结构S和S上的一个基本运算集构成的整体(S ,)。 10.数据结构涉及数据表示和数据处理两个方面 11.存储结构的含义和四种基本存储方式的基本思想? 答:存储结构是指按照逻辑结构的要求建立的数据的机内表示称为存储结构。 一个存储结构应包含三个主要的部分:存储结点、机内表示和附加设施。 存储结构包括四种存储方式,顺序存储方式、链式存储方式、索引存储方式和散列存储方式。 12.运算实现与运算的联系与区别? 答:运算指的是数据在逻辑结构S上的某种操作,运算只描述处理功能,不包括处理步骤和方法;而运算实现是指一个完成该运算功能的程序,运算实现的核心是处理步骤的规定,即算法设计。 13.算法的概念和分类? 答:算法是指规定了求解给定类型问题所需的所有“处理步骤”及其执行顺序,使得给定类型的任何问题能在有限时间内被

【2021年最新整理】电大本科数据结构(本期末综合练习资料考试答案解析

电大数据结构(本)期末综合练习 期末综合练习一 一、单项选择题 1.数据的物理结构(D)。 A.与数据的逻辑结构无关 B.仅仅包括数据元素的表示 C.只包括数据元素间关系的表示 D.包括数据元素的表示和关系的表示 2.数据元素是数据的基本单位,它(C )。 A.只能有一个数据项组成 B.至少有二个数据项组成 C.可以是一个数据项也可以由若干个数据项组成 D.至少有一个数据项为指针类型 3.从n个数中选取最大元素,( C )。 A.基本操作是数据元素间的交换B.算法的时间复杂度是O(n2) C.算法的时间复杂度是O(n) D.需要进行(n+1)次数据元素间的比较 4.线性表的顺序结构中,( C )。 A.逻辑上相邻的元素在物理位置上不一定相邻 B.数据元素是不能随机访问的 C.逻辑上相邻的元素在物理位置上也相邻 D.进行数据元素的插入、删除效率较高 5.以下表中可以随机访问的是( D )。 A.单向链表 B.双向链表 C.单向循环链表D.顺序表 6.带头结点的单向链表为空的判断条件是( B )(设头指针为head)。 A.head = =NULL B.head->next= =NULL C.head->next= =head D.head!=NULL 7 .设顺序存储的线性表长度为n,对于删除操作,设删除位置是等概率的,则删除一个元素平均移动元素的次数为( A )。 A.(n+1)/2B.n C.2nD.n-i 8.线性结构中数据元素的位置之间存在(A )的关系。 A.一对一B.一对多 C.多对多D.每一个元素都有一个直接前驱和一个直接后继 9.设top是一个链栈的栈顶指针,栈中每个结点由一个数据域data和指针域next组成,设用x接收栈顶元素,则出栈操作为(A )。 A.x=top->data;top=top->next; B.top=top->next;x=top->data; C.x=top-> next;top=top-> data; D.top->next =top; x=top->data; 10.设顺序存储的线性表长度为n,要删除第i个元素,按课本的算法,当i=( C )时,移动元素的次数为3 A.3 B.n/2 C.n-3 D.4 11.以下说法正确的是( C )。 A.队列是后进先出 B.栈的特点是后进后出 C.栈的删除和插入操作都只能在栈顶进行 D.队列的删除和插入操作都只能在队头进行 12 .以下说法不正确的是(C )。 A.栈的特点是后进先出B.队列的特点是先进先出 C.栈的删除操作在栈底进行,插入操作在栈顶进行 D.队列的插入操作在队尾进行,删除操作在队头进行 13.串函数StrCmp(“abA”,”aba”)的值为( D )。 A.1 B.0 C.“abAaba”D.-1

自考数据结构导论试题真题

全国 2004年 1 月高等教育自学考试 数据 结构导论试题 课程代码: 02142 、单项选择题(本大题共 15 小题,每小题 2 分,共 30 分) 在每小题列出的四个备选项中只有一个是符合题目要求的, 请将其代码填写在题后的 括号内。错选、多选或未选均无分。 1.下列数据组织形式中, ( )的各个结点可以任意邻接。 A .集合 B .树形结构 C .线性结构 D .图状结构 2.设某二维数组 A[ 1..n ,1..n],则在该数组中用顺序查找法查找一个元素的时间复杂 性的量级为( ) A .O (log 2n ) B . O (n ) 2 C .O (nlog 2n ) D .O (n 2) 3.在线性表的下列存储结构中,读取元素花费时间最少的是( A .单链表 B .双链表 C .循环链表 D .顺序表 4.将一个头指针为 p 的单链表中的元素按与原单链表相反的次序存放,则下列算法段 中的空白处应为 q=NULL; while (p!=NULL) { ( D . 5.数组通常具有两种基本运算, 即( A .创建和删除 C .读和写 6.除根结点外,树上每个结点( A .可有任意多个孩子、任意多个双亲 B .可有任意多个孩子、一个双亲 C .可有一个孩子、任意多个双亲 D .只有一个孩子、一个双亲 p=q; r=q; q=p; p=p -> next; q -> next=r; q=p; r=q; p=p -> next; q -> next=r; r=q; p=p -> next; q=p; q A . B . C . ) B .索引和修改

7.具有 100 个结点的二叉树中,若用二叉链表存储,其指针域部分用来指向结点的左、 右孩子,其余()个指针域为空。 9.如果无向图 G 必须进行二次广度优先搜索才能访问其所有顶点,则下列说法中不正确的是() A.G 肯定不是完全图B.G 一定不是连通图 C.G 中一定有回路D. G 有 2 个连通分量 10.若构造一棵具有 n 个结点的二叉排序树,最坏的情况下其深度不会超过( )A . n/2 C.(n+1)/2 D. n+1 11.若用二分查找法取得的中间位置元素键值大于被查找值,说明被查找值位于中间值 的前面,下次的查找区间为从原开始位置至() B.该中间位置- 1 D .该中间位置/ 2 ) B.索引存取 D.直接存取 13.若检索顺序文件各个记录的概率相同,设文件占用的页块数为n,则按关键字存取 时的平均访问外存次数为 ( ) A .n/2 B .n C .n/4 D . log n 1 4 .下列关键码序列 中, 属于堆的是 ( ) A .(15,30,22,93,52 , 71) B . (15 , 71 , 30 , 22 , 93 , 52) C(15,52,22,3071) D(933052221571) 15.已知 10 个数据元素为( 54,28, 16,34,73, 62,95,60,26,43),对该数列按从小到大排序,经过一趟冒泡排序后的序列为() A16283454736260264395 B .28 , 16 , 34 , 54 , 62 , 73 , 60 , 26 , 43 , 95 C .28 , 16 , 34 , 54 , 62 , 60 , 73 , 26 , 43 , 95 D .16 , 28 , 34 , 54 , 62 , 60 , 73 , 26 , 43 , 95 A . 50 C.100 8.邻接表是图的一种( A .顺序存储结构C.索引存储结构 B. 99 D.101 ) B.链式存储结构 B.n A .该中间位置 C .该中间位置+ 1 12.散列文件不能( A .随机存取 C.按关键字存取

2020年国家开放大学电大考试《数据结构》期末复习试题

数据结构期末复习练习题 第一章绪论 一、单选题 1. 一个数组元素a[i]与________的表示等价。 A、*(a+i) B、a+i C、*a+i D、&a+i 2. 对于两个函数,若函数名相同,但只是____________不同则不是重载函数。 A、参数类型 B、参数个数 C、函数类型 3. 若需要利用形参直接访问实参,则应把形参变量说明为________参数 A、指针 B、引用 C、值 4. 下面程序段的时间复杂度为____________。 for(int i=0; i

02142数据结构导论份真题及答案.doc

2012年10月高等教育自学考试全国统一命题考试 数据结构导论试题 课程代码:02142 请考生按规定用笔将所有试题的答案涂、写在答题纸上。 选择题部分 注意事项: 1. 答题前,考生务必将自己的考试课程名称、姓名、准考证号用黑色字迹的签字笔或钢笔填写在答题纸规定的位置上。 2. 每小题选出答案后,用2B铅笔把答题纸上对应题目的答案标号涂黑。如需改动,用橡皮擦干净后,再选涂其他答案标号。不能答在试题卷上。 一、单项选择题(本大题共15小题,每小题2分,共30分) 在每小题列出的四个备选项中只有一个是符合题目要求的。错选、多选或未选均无分。 1.下面几种算法时间复杂度阶数中,值最大的是 A.O(nlog2n) B.O(n2) C.O(n) D.O(2n) 2.即使输入非法数据,算法也能适当地做出反应或进行处理,不会产生预料不到的运行结果,这种算法好坏的评价因素称为 A.正确性 B.易读性 C.健壮性 D.时空性 3.设顺序表的长度为100,则在第40个元素之后插入一个元素所需移动元素的个数为 A.40 B.60 C.61 D.100 4.设带头结点的单循环链表的头指针为head,则判断该链表是否为空的条件是 A. head->next==head B. head->next==NULL C. head!=NULL D. head==NULL 5.在链栈的运算中,不需要 ...判断栈是否为空的是 A.出栈 B.进栈 C.取栈顶元素 D.求链栈的元素个数 6.一个队列的输入序列是A,B,C,D,则该队列的输出序列是 A.A,B,C,D B.B,C,D,A C.D,C,B,A D.C,D,B,A 7.以行序为主序的二维数组a[3][5]中,第一个元素a[0][0]的存储地址是100,每个元素占2个存储单元,则a[1][2]的存储地址是 A.100 B.108 C.114 D.116 8.对任何一棵二叉树T,若叶结点数为5个,则度为2的结点个数为 A.4 B.5 C.6 D.无法确定 9.m个叶结点的哈夫曼树中,其结点总数为 A.m B.2m+1

电大数据结构考试资料总汇

1.下列功能中,不属于数据库管理系统功能得就是( B )。B.数据库文 件读写 2.设有学生表(学号,姓名,所在系,专业,身份证号),其中能够作为候选 键得就是( B )。 B.学号、身份证号 3.下列运算中,属于专门得关系运算得就是( C )。C。集合得连接 运算 4.下列扩展名中,属于SQL Server推荐得日志文件扩展名得就是 ( D )。D.、ldf 5.下列关于SQL Server数据库组成得说法,正确得就是( A )。A.一 个数据库可由多个数据文件与多个日志文件组成 6.下列(B)操作属于数据操作。B.UPDATE 7.下列类型中,属于普通编码可变长字符串类型得就是( D )。D。var char 8.下列语句运行得结果就是( C ). DECLARE x char (2)='30', y char(2) ='ABC’ z char(8) SET z=x+y Print zC。30ABC 9.下列( D )定义外键约束。D.FOREIGN KEY 10.下列表达式中,与“所在部门NOT IN ('财务', '后勤')"等价 得就是( A )。 A.所在部门!= ’财务' AND 所在部门 !=’后勤’ 11.对char(10)类型得列,若存储“中国",其占用得字节数就是 (C)。C。10 12.现要统计选课表中C01课程得总成绩,下列语句中正确得就是( C )。C.SELECT SUM(成绩)FROM 选课表 WHERE 课程号 = 'C01’ 13.设有销售表(经销商号,汽车型号,销售时间,销售价格),现要删除销售 价格为空得所有记录,下列语句中正确得就是( C).C.DELETE 销售表WHERE销售价格IS NULL 14.设有商品表(商品号,商品名,类别,单价),现要将S011与S012商 品得单价加10元,下列语句中正确得就是( A )。 A。UPDATE商品表 SET 单价 = 单价+10 WHERE商品号 = 'S011’ OR商品号=’S012’ 15.下列关于索引得说法,错误得就是( A ). A.索引由索引项组成,索引项只能由表中得一个列组成 16.下列关于触发器得说法,正确得就是( C )。 C.触发器就是由数据更改操作引发得自动执行得代码 17.下列关于数据库中事务得说法,正确得就是( B )。 B.一个事务应该包含得操作就是由用户得业务决定得 18.下列关于SQL Server完整备份得说法,错误得就是( D )。D.完整备份之后必须进行一次差异备份 19.下列不属于ADO对象得就是( A )。A。OLE DB 20.在VB中,可以利用Connection对象得Execute方法实现对数据库得更 改操作.下列删除SC表中学号为S01得选课记录得语句,正确得就是 (B)。 B.ADOcn、Execute“DELETE FROM SC WHERE 学号 = 'S01'" 21.更改数据操作属于数据得静态特征.(× ) 22.关系数据模型得数据结构就是简单二维表.( √ ) 23.数据库三级模式中得内模式又称为存储模式,描述数据得物理存储. (√) 24.一个关系模式只能包含一个候选键。(×) 25.SQL Server 2008最核心得服务就是SSMS.(×) 26.SQL Server 2008中,用户创建得数据库得大小不能小于9MB. (×) 27.数据操作功能用于控制用户对数据库得操作权限。( × ) 28.RETURN得作用就是按照条件退出。( ×) 29.不管对表进行什么类型得操作,在表上建立得索引越多越能提高查询效 率.( ×) 30.SQL Server2008中,当登录账户成为某数据库得合法用户之后,其 对该数据库中得用户数据与对象自动拥有各种操作权限。(×)1。(本题10分)写出创建如下三张数据表得SQL语句。 “商品”表结构: 商品号:普通编码定长字符类型,长度为10,主键。 商品名:普通编码可变长字符类型,长度为20,非空。 类别:统一字符编码定长字符类型,长度为3,取值为:“PAD”、“手机"、“计算机". 单价:整型. “生产厂家”表结构: 厂家编号:普通编码定长字符类型,长度为20,主键。 厂家名:普通编码可变长字符类型,长度为30,非空。 厂家地址:统一字符编码可变长字符类型,长度为40。 “生产”表结构: 商品号:普通编码定长字符类型,长度为10,引用商品表得外键。 厂家编号:普通编码定长字符类型,长度为20,引用生产厂家表得外键. 生产日期:日期类型. 生产数量:整型. 主键:(商品号,厂家编号,生产日期) 参考答案及评分要点 CREATE TABLE 商品( 商品号char(10) primary key, 商品名varchar(20)not null, 类别?nchar(3) CHECK (类别 IN('PAD','手机',’ 计算机’)), 单价int? ?) ?CREATE TABLE 生产厂家( 厂家编号char(20) primary key, 厂家名?varchar(30) not null, 厂家地址nvarchar(40) ) ?CREATETABLE生产( 商品号?char(10), 厂家编号?char(20), 生产日期?date, 生产数量?int, Primarykey(商品号,厂家编号,生产日期), Foreign key(商品号) references商品(商品号), Foreignkey(厂家编号)references生产厂家 (厂家编号) ) 2.依据第1题所创建得三张表,写出完成下列操作得SQL语句(本题共20分,每小题5分)。 1)查询“手机”类商品得商品名与单价. 2)查询单价大于4000得“计算机”类商品得生产情况,列出商品名、单价与生产日期。 3)删除2012年6月1日之前生产得全部商品。 4)在商品表中插入一行数据,商品号:SP100,商品名:新商品,类别:PAD,单价未知。 参考答案及评分要点 1)SELECT商品名,单价FROM商品 WHERE类别= ’手机' 2)SELECT 商品名, 单价,生产日期 FROM商品 a JOIN 生产 b ON a、商品号 = b、商品号 WHERE单价> 4000 AND类别 = ’计算机' 3)DELETE商品WHERE 商品号 IN( SELECT 商品号FROM 生产WHERE 生产日期〈’2012/6/1') 4)INSERT INTO 商品(商品号,商品名,类别) VALUES('SP100’,'新商品’,’PAD') 3。依据第1题所创建得三张表,写出创建满足如下要求得视图得SQL语句:查询生产“手机”类商品得厂家名与厂家地址。(本题10分) 参考答案及评分要点 CREATEVIEW V1 AS SELECT 厂家名,厂家地址FROM 生产厂家 a JOIN生产 b ON a、厂家编号 =b、厂家编号 JOIN商品cONc、商品号= b、商品号 WHERE类别= '手机’ 31.下列关于数据库管理系统得说法,错误得就是( C )。C。数据库管理 系统不支持多用户同时访问相同数据库 32.设有图书销售表(书号,销售时间,销售数量,销售总价),设同一时间可 销售多种图书,但同一图书同一时间只能销售一次。其中适合作为主键 得就是( D )。 D。(书号,销售时间) 33.下列关于投影运算得说法,正确得就是( D ).D.投影运算就是从垂 直方向选取数据,所选取得数据没有重复得行 34.下列关于实体完整性得说法,错误得就是( D ).D。实体完整性属于 应用级得约束 35.下列(C)操作属于数据定义。C。CREATE 36.下列类型中,属于统一编码可变长字符串得就是( B )。B.nvarchar 37.下列属于数值类型得就是( A )。A.int 38.“NULL +100"得执行结果就是(A)。A.NULL 39.下列表达式中,与“年龄 BETWEEN 20 AND 30"等价得就是 (B)。B。年龄 >= 20 AND 年龄 <= 30 40.现要统计选课表中C01课程得最高成绩,下列语句中正确得就是 ( A )。A。SELECT MAX(成绩) FROM选课表 WHERE 课程号 =’C01’ 41.下列关于聚集索引与非聚集索引得说法,正确得就是(C)。C。 在一个表上可以同时存在聚集索引与非聚集索引 42.设有选课表(学号,课程号,成绩),现要统计选了课程得学生人数,下列 语句中正确得就是( D )。D.SELECT COUNT(DISTINCT 学号) FROM 选课表 43.设有选课表(学号,课程号,成绩),现要删除成绩为空得所有记录,下列 语句中正确得就是( C )。C.DELETE 选课表WHERE 成绩IS N ULL 44.仅允许Windows操作系统用户连接到SQLServer数据库服务器 得验证模式就是( B )。B.Windows身份验证模式 45.下列关于视图得说法,错误得就是( A )。A。只能在基本表上建立视 图,不能在视图上再建立视图 46.下列关于数据库设计中新奥尔良方法得说法,错误得就是( D )。D.

相关文档
最新文档