经典数据结构上机题—答案word版本

经典数据结构上机题—答案word版本
经典数据结构上机题—答案word版本

数据结构上机实验题目

实验一线性表的顺序存储结构

实验学时 2学时

背景知识:顺序表的插入、删除及应用。

目的要求:

1.掌握顺序存储结构的特点。

2.掌握顺序存储结构的常见算法。

实验内容

1.输入一组整型元素序列,建立顺序表。

2.实现该顺序表的遍历。

3.在该顺序表中进行顺序查找某一元素,查找成功返回1,否则返回0。4.判断该顺序表中元素是否对称,对称返回1,否则返回0。

5.实现把该表中所有奇数排在偶数之前,即表的前面为奇数,后面为偶数。

6.输入整型元素序列利用有序表插入算法建立一个有序表。

7.利用算法6建立两个非递减有序表并把它们合并成一个非递减有序表。

8. 利用该顺序结构实现循环队列的入队、出队操作。

8.编写一个主函数,调试上述算法。

#include

#include

#define OVERFLOW 0

#define MAXSIZE 100

typedef int ElemType;

typedef struct list

{ElemType elem[MAXSIZE];

int length;

}Sqlist;

void Creatlist(Sqlist &L)

{int i;

printf("请输入顺序表的长度:"); //输入一组整型元素序列,建立一个顺序表。

scanf("%d",&L.length);

for(i=0;i

scanf("%d",&L.elem[i]);

}

void printlist(Sqlist &L) //以输出的形式实现对该顺序表的遍历

{int i;

for(i=0;i

printf("%d ",L.elem[i]);

printf("\n");

}

void Searchlist(Sqlist &L,int x) //在顺序表中进行顺序查找某一元素x,查找成功则返回其存储位置i,否则返回错误信息

{int i,k=-1;

for(i=0;i

if(L.elem[i]==x){

k=i+1;printf("%d ",k);}

if(k==-1)

printf("error!");

printf("\n");

}

void Inseri(Sqlist &L,int i,int x) //在顺序表的第i个位置上插入一个元素x {int j;

for(j=L.length;j>=i;j--)

L.elem[j]=L.elem[j-1];

L.elem[j]=x;

L.length++;

}

void Delete(Sqlist &L,int i) //删除顺序表中第i个元素

{int j;

for(j=i;j

L.elem[j-1]=L.elem[j];

L.length--;

}

void Insert(Sqlist &L,int x) //输入一个元素x,把它插入到有序表中,使顺序表依然有序。

{int i,j;

if(L.length==MAXSIZE) exit(OVERFLOW); //表满,不能插入

for(i=1;i<=L.length&&L.elem[i-1]<=x;i++);

for(j=L.length;j>=i;j--)

L.elem[j]=L.elem[j-1];

L.elem[i-1]=x;

L.length++;

}

void Creatlist_sorted(Sqlist &L) //利用有序表插入算法建立一个有序表{int i,num;

ElemType x;

L.length=0;

printf("请输入顺序表的长度:");

scanf("%d",&num);

for(i=1;i<=num;i++)

{

scanf("%d",&x);

Insert(L,x);

}

}

void Merger(Sqlist &p,Sqlist &r,Sqlist &c) //建立两个非递减有序表,并把它们合并成一个非递减有序表

{

ElemType *a,*b,i=0,j=0,k=0;

a=&p.elem[0];

b=&r.elem[0];

c.length=p.length+r.length;

while(i

{if(*a>=*b)

{c.elem[k]=*b;b++;k++;j++;}

else {c.elem[k]=*a;a++;k++;i++;}

}

if(j==r.length)

for(;k

{c.elem[k]=*a;a++; }

else if(i==p.length)

for(;k

{c.elem[k]=*b;b++;}

}

void main()

{Sqlist L,M,N;

int x,i,n;

printf("1.建立一个顺序表.\n");

printf("2.以输出的形式对该顺序表遍历.\n");

printf("3.在顺序表中进行顺序查找某一元素x.\n");

printf("4.在顺序表的第i个位置上插入一个元素x.\n");

printf("5.删除顺序表中第i个元素.\n");

printf("6.利用有序表插入算法建立一个有序表.\n");

printf("7.建立两个非递减有序表,并把它们合并成一个非递减有序表.\n"); printf("8.输入一个元素x,把它插入到有序表中,使顺序表依然有序.\n"); while(1){

printf("请选择:");

scanf("%d",&n);

switch(n)

{case 1:Creatlist(L);break;

case 2:printlist(L);break;

case 3:printf("请输入要查找的元素x:");

scanf("%d",&x);

Searchlist(L,x);break;

case 4:printf("请输入要插入的位置i:");

scanf("%d",&i);

if(i<1||i>L.length+1){

printf("error!\n");break;}

printf("请输入要插入的值x:");

scanf("%d",&x);

Inseri(L,i,x);

printlist(L);break;

case 5:printf("请输入要删去的元素的位置i:");

scanf("%d",&i);

if(i<1||i>L.length){

printf("error!\n");break;}

Delete(L,i);

printlist(L);break;

case 6:Creatlist_sorted(L);

printlist(L);break;

case 7:Creatlist_sorted(L);

Creatlist_sorted(M);

Merger(L,M,N);

printlist(N);break;

case 8:Creatlist_sorted(L);

printf("请输入要插入的元素x:");

scanf("%d",&x);

Insert(L,x);

printlist(L);break;

}

}

}

实验二链式存储结构(一)----单向链表的有关操作

实验学时 3学时

背景知识:单向链表的插入、删除及应用。

目的要求

1.掌握单向链表的存储特点及其实现。

2.掌握单向链表的插入、删除算法及其应用算法的程序实现。

实验内容

1.随机产生或键盘输入一组元素,建立一个带头结点的单向链表(无序)。

2.遍历单向链表。

3.把单向链表中元素逆置(不允许申请新的结点空间)。

4.在单向链表中删除所有的偶数元素结点。

5.编写在非递减有序链表中插入一个元素使链表元素仍有序的函数,并利用该函数建立一个非递减有序单向链表。

6.利用算法5建立两个非递减有序单向链表,然后合并成一个非递增链表。

7.利用算法5建立两个非递减有序单向链表,然后合并成一个非递减链表。

8.利用算法1建立的链表,实现将其分解成两个链表,其中一个全部为奇数,另一个全部为偶数(尽量利用已知的存储空间)。

* 9.采用单向链表实现一元多项式的存储并实现两个多项式相加并输出结果。

10.在主函数中设计一个简单的菜单,分别调试上述算法。

*11.综合训练:利用链表实现一个班级学生信息管理(数据录入、插入、删除、排序、查找等,并能够实现将数据存储到文件中)

/*单向链表的有关操作示例*/

/*类型定义及头文件部分,文件名为sllink.h*/

#include

#include

typedef int ElemType;//元素实际类型

typedef struct LNode{

ElemType data;

struct LNode *next;

}LNode,*LinkList; //定义结点、指针类型名

//头插法建立无序链表

void CreateList(LinkList &L){

LinkList p;

ElemType e;

L=(LinkList)malloc(sizeof(LNode));

L->next=NULL;

printf("头插法建立链表,以0结束\n");

scanf("%d",&e);

while(e){

p=(LinkList)malloc(sizeof(LNode));

p->data=e;

p->next=L->next;

L->next=p;

scanf("%d",&e);

}

}

/*非递减有序单向链表L插入元素e序列仍有序*/

void Insert_Sort(LinkList &L,ElemType e){

LinkList p,s;

s=(LinkList)malloc(sizeof(LNode));

s->data=e;

p=L;

while(p->next&&p->next->data<=e)

p=p->next;/*查找插入位置*/

s->next=p->next; /*插入语句*p结点后插入*s结点*/

p->next=s;

}

/*建立递增有序的单向链表*/

void Create_Sort(LinkList &L){

ElemType e;

L=(LinkList)malloc(sizeof(LNode));

L->next=NULL;

printf("建立有序表,输入任意个整型数据以0结束\n"); scanf("%d",&e);

while(e){

Insert_Sort(L,e);

scanf("%d",&e);

}

}

/*单向链表的遍历*/

void Traverse(LinkList L){

LinkList p;

printf("遍历链表");

for(p=L->next;p;p=p->next)

printf("%5d",p->data);

printf("\n");

}

/*在单向链表删除元素e*/

void Delete(LinkList &L,ElemType e){

LinkList p,q;

p=L;

q=L->next;

while(q&& q->data!=e){//查找元素的删除位置

p=q;

q=q->next;

}

if(!q) printf("\nnot deleted");/*未找到元素e*/ else {p->next=q->next;/*找到删除*/

free(q);}

}

/*单向链表的逆置*/

void exch(LinkList &L){

LinkList p,s;

p=L->next;

L->next=NULL;

while(p){

s=p;

p=p->next;

s->next=L->next;

L->next=s;

}

}

/*两个非递减有序单向链表合并后仍为非递减序列*/

void MergeIncrease(LinkList La,LinkList Lb,LinkList &Lc){

LinkList p,q,s,rear;

p=La->next;

q=Lb->next;

Lc=rear=La;

free(Lb);

while(p&&q){

if (p->datadata) {s=p;p=p->next; }

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

rear->next=s;/*较小元素插入表尾*/

rear=rear->next;

}

if (p) rear->next=p; else rear->next=q

实验三迷宫问题求解

实验学时 3学时

背景知识:栈的操作。

目的要求

1.掌握栈的存储特点及其实现。

2.掌握栈的出栈和入栈操作。

实验内容:

以一个mxn的长方阵表示迷宫,0和1分别表示迷宫中的通路和障碍。设计一个程序,对任意设定的迷宫,求出一条从入口到出口的通路,或得出没有通路的结论。

要求:首先实现一个顺序或链表做存储结构的栈类型,然后编写一个求解迷宫的非递归程序。求得的通路以三元组(i, j, d)的形式输出,其中:(i, j)表示迷宫的坐标,d表示走到下一坐标的方向。如对下面的

迷宫,输出的一条通路为:(1,1,1),(1,2,2),(2,2,2),(3,2,3),(3,1,2),…...

迷宫约定,x方向为行方向,y方向为列方向,迷宫开始坐标(左上角)为(1,1)。

#include

#include

#include

struct node

{

int sign;//标识,0什么都不在,1在open中,2在closed中

int flag;//标志位0/1,0可以走,1不可以走

int f,g,h;//判断函数

int x,y;//坐标

int old;//是否old节点,0非,1是

};

struct link

{

node fnode;

link *next;

link *pri;

};

link *open,*closed,*bestnode,*successor,*p,*q,*r,*s;

int maze_flag[7][7]={ {0,1,0,0,0,0,0},

{0,1,0,1,0,1,0},

{0,1,0,0,0,1,0},

{0,1,0,1,0,1,0},

{0,0,0,1,0,0,0},

{1,1,0,1,0,1,0},

{0,0,0,0,0,1,0}};//表示迷宫的数组,0可以走,1不可以走node maze[7][7];

int judge(node n)//判断函数,判断n节点是否可以走

{

if(n.flag==1)

return(1);

else

return(0);

}

void in_open(node n)//将n节点放入open表

{

p=open;

while(p->next!=open)

{

if(n.f>=p->fnode.f)

{

p->next->pri=(link *)malloc(sizeof(link));

p->next->pri->pri=p;

p=p->next;

p->pri->next=p;

p->pri->pri->next=p->pri;

p=p->pri;

p->fnode.flag=n.flag;

p->fnode.f=n.f;

p->fnode.g=n.g;

p->fnode.h=n.h;

p->fnode.x=n.x;

p->fnode.y=n.y;

p->fnode.old=n.old;

p->fnode.sign=n.sign=1;

}

else

p=p->next;

}

open->pri=(link *)malloc(sizeof(link));

open->pri->pri=p;

open->pri->next=open;

p->next=open->pri;

p=p->next;

p->fnode.flag=n.flag;

p->fnode.f=n.f;

p->fnode.g=n.g;

p->fnode.h=n.h;

p->fnode.x=n.x;

p->fnode.y=n.y;

p->fnode.old=n.old;

p->fnode.sign=n.sign=1;

}

void out_open(node n)//将n节点从open表中移出{

p=open;

while(p->next!=open)

{

if(n.f=p->fnode.f)

{

link *p1;

p1=p->next;

p->next=p->next->next;

p->next->pri=p;

free(p1);

n.sign=0;

}

else

p=p->next;

}

}

void in_closed(node n)//将n节点放入closed表{

while(q->next!=closed)

{

if(n.f>=q->fnode.f)

{

q->next->pri=(link *)malloc(sizeof(link));

q->next->pri->pri=q;

q=q->next;

q->pri->next=p;

q->pri->pri->next=q->pri;

q=q->pri;

q->fnode.flag=n.flag;

q->fnode.f=n.f;

q->fnode.g=n.g;

q->fnode.h=n.h;

q->fnode.x=n.x;

q->fnode.y=n.y;

q->fnode.old=n.old;

q->fnode.sign=n.sign=2;

}

else

q=q->next;

}

closed->pri=(link *)malloc(sizeof(link));

closed->pri->pri=q;

closed->pri->next=closed;

q->next=closed->pri;

q=q->next;

q->fnode.flag=n.flag;

q->fnode.f=n.f;

q->fnode.g=n.g;

q->fnode.h=n.h;

q->fnode.x=n.x;

q->fnode.y=n.y;

q->fnode.old=n.old;

q->fnode.sign=n.sign=2;

}

void out_closed(node n)//将n节点从closed表中移出{

q=closed;

while(q->next!=closed)

{

if(n.f=q->fnode.f)

{

link *q1;

q1=q->next;

q->next=q->next->next;

q->next->pri=q;

free(q1);

n.sign=0;

}

else

q=q->next;

}

}

void in_bestnode(node n)//将n节点设为bestnode节点{

while(r->next!=bestnode)

{

if(n.f>=r->fnode.f)

{

r->next->pri=(link *)malloc(sizeof(link));

r->next->pri->pri=r;

r=r->next;

r->pri->next=r;

r->pri->pri->next=r->pri;

r=r->pri;

r->fnode.flag=n.flag;

r->fnode.f=n.f;

r->fnode.g=n.g;

r->fnode.h=n.h;

r->fnode.x=n.x;

r->fnode.y=n.y;

r->fnode.old=n.old;

}

else

r=r->next;

}

bestnode->pri=(link *)malloc(sizeof(link)); bestnode->pri->pri=r;

bestnode->pri->next=bestnode;

r->next=bestnode->pri;

r=r->next;

r->fnode.flag=n.flag;

r->fnode.f=n.f;

r->fnode.g=n.g;

r->fnode.h=n.h;

r->fnode.x=n.x;

r->fnode.y=n.y;

r->fnode.old=n.old;

}

void out_bestnode(node n)//将n节点的bestnode去掉{

while(r->next!=bestnode)

{

if(n.f=p->fnode.f)

{

link *r1;

r1=r->next;

r->next=r->next->next;

r->next->pri=r;

free(r1);

}

else

r=r->next;

}

}

void in_successor(node n)//将n节点设置为successor节点{

s=successor;

while(s->next!=successor)

{

if(n.f>=s->fnode.f)

{

s->next->pri=(link *)malloc(sizeof(link));

s->next->pri->pri=s;

s=p->next;

s->pri->next=s;

s->pri->pri->next=s->pri;

s=s->pri;

s->fnode.flag=n.flag;

s->fnode.f=n.f;

s->fnode.g=n.g;

s->fnode.h=n.h;

s->fnode.x=n.x;

s->fnode.y=n.y;

s->fnode.old=n.old;

}

else

s=s->next;

}

successor->pri=(link *)malloc(sizeof(link));

successor->pri->pri=s;

successor->pri->next=successor;

s->next=successor->pri;

s->fnode.flag=n.flag;

s->fnode.f=n.f;

s->fnode.g=n.g;

s->fnode.h=n.h;

s->fnode.x=n.x;

s->fnode.y=n.y;

s->fnode.old=n.old;

}

void out_successor(node n)//将n节点的successor去掉

{

s=successor;

while(s->next!=successor)

{

if(n.f=p->fnode.f)

{

link *s1;

s1=s->next;

s->next=s->next->next;

s->next->pri=s;

free(s1);

}

else

s=s->next;

}

}

void print(link *n)//输出link类型的表n

{

link *forprint;

forprint=n;

printf("the key is ");

while(forprint->next!=n)

printf("(%d,%d)\n",forprint->fnode.x,forprint->fnode.y);

}

int main()

{

//初始化部分

//这部分的功能是将二维的整形数组赋值给node型的二维数组int i=0,j=0;

for(i=0;i<7;i++)

for(j=0;j<7;j++)

{

maze[i][j].x=i;

maze[i][j].y=j;

maze[i][j].flag=maze_flag[i][j];

if(maze[i][j].flag==0)

{

maze[i][j].h=6-i+6-j;

maze[i][j].sign=maze[i][j].f=maze[i][j].g=maze[i][j].old=0;

}

else

maze[i][j].h=-1;

}

for(i=0;i<7;i++)//输出迷宫示意图

{

for(j=0;j<7;j++)

{

printf("%2d",maze_flag[i][j]);

}

printf("\n");

}

//这部分的功能是将open,closed,bestnode表初始化,都置为空表

p=open=(link *)malloc(sizeof(link));

open->next=open;

open->pri=open;

q=closed=(link *)malloc(sizeof(link));

closed->next=closed;

closed->pri=closed;

r=bestnode=(link *)malloc(sizeof(link));

bestnode->next=bestnode;

bestnode->pri=bestnode;

//将第一个元素即(0,0)节点放入open表,开始算法

in_open(maze[0][0]);

maze[0][0].f=maze[0][0].h;

link *s2;

s2=successor;

if(open->next!=open)//open表为空时则失败退出

{

while(1)

{

in_bestnode(open->fnode);//将open表的第一个元素放入bestnode中

in_closed(maze[open->fnode.x][open->fnode.y]);//将open表的第一个元素放入closed中maze[open->fnode.x][open->fnode.y].g++;//将open表的第一个元素的g值加一,表示已经

走了一步

out_open(maze[open->fnode.x][open->fnode.y]);//将open表的第一个元素删除

if(bestnode->fnode.x==6&&bestnode->fnode.y==6)//若bestnode是目标节点,则成功退出{

printf("succes!!\nthen print the key:\n");

print(closed);

break;

}

else//若bestnode不是目标节点,则扩展其临近可以走的节点为successor

{

if(i==0||j==0||i==6||j==6)

{

if(i==0&&j==0)//若为(0,0),则判断右边和下边的元素

{

if(judge(maze[i][j+1])==0)

in_successor(maze[i][j+1]);

if(judge(maze[i+1][j])==0)

in_successor(maze[i+1][j]);

}

else if(i==0&&j==6)//若为(0,6),则判断左边和下边的元素

{

if(judge(maze[i-1][j])==0)

in_successor(maze[i-1][j]);

if(judge(maze[i+1][j])==0)

in_successor(maze[i+1][j]);

}

else if(i==6&&j==0)//若为(6,0),则判断左边和上边的元素

{

if(judge(maze[i-1][j])==0)

in_successor(maze[i-1][j]);

if(judge(maze[i][j-1])==0)

in_successor(maze[i][j-1]);

}

else if(i==6&&j==6)//若为(6,6),则判断左边和上边的元素

{

if(judge(maze[i-1][j])==0)

in_successor(maze[i-1][j]);

if(judge(maze[i][j-1])==0)

in_successor(maze[i][j-1]);

}

else if(i==0)//若为第一行的元素(不在角上),则判断左边,下边和右边

{

if(judge(maze[i][j+1])==0)

in_successor(maze[i][j+1]);

if(judge(maze[i][j-1])==0)

in_successor(maze[i][j-1]);

if(judge(maze[i+1][j])==0)

in_successor(maze[i+1][j]);

}

else if(i==6)//若为第七行的元素(不在角上),则判断左边,上边和右边{

if(judge(maze[i][j+1])==0)

in_successor(maze[i][j+1]);

if(judge(maze[i][j-1])==0)

in_successor(maze[i][j-1]);

if(judge(maze[i-1][j])==0)

in_successor(maze[i-1][j]);

}

else if(j==0)//若为第一列的元素(不在角上),则判断右边,下边和上边{

if(judge(maze[i+1][j])==0)

in_successor(maze[i+1][j]);

if(judge(maze[i-1][j])==0)

in_successor(maze[i-1][j]);

if(judge(maze[i][j+1])==0)

in_successor(maze[i][j+1]);

}

else if(j==6)//若为第七列的元素(不在角上),则判断左边,上边和上边{

if(judge(maze[i+1][j])==0)

in_successor(maze[i+1][j]);

if(judge(maze[i-1][j])==0)

in_successor(maze[i-1][j]);

if(judge(maze[i][j-1])==0)

in_successor(maze[i][j-1]);

}

}

else//若为中将的元素,则判断四个方向的节点

{

if(judge(maze[i][j-1])==0)

in_successor(maze[i][j-1]);

if(judge(maze[i][j+1])==0)

in_successor(maze[i][j+1]);

if(judge(maze[i-1][j])==0)

in_successor(maze[i-1][j]);

if(judge(maze[i+1][j])==0)

in_successor(maze[i+1][j]);

}

while(s2->next!=successor)//对所有的successor节点进行下列操作

{

maze[s2->fnode.x][s2->fnode.y].g=bestnode->fnode.g+bestnode->fnode.h;//计算g(suc)=g(bes)+h(bes,suc)

if(s2->fnode.sign==1)//若在open表中,则置为old,记下较小的g,并从open表中移出,放入closed表中

{

s2->fnode.old=1;

if(s2->fnode.gfnode.x][s2->fnode.y].g)

{

maze[s2->fnode.x][s2->fnode.y].g=s2->fnode.g;

maze[s2->fnode.x][s2->fnode.y].f=maze[s2->fnode.x][s2->fnode.y].g+maze[s2->fnode.x][s2->fn ode.y].h;

out_open(maze[s2->fnode.x][s2->fnode.y]);

in_closed(maze[s2->fnode.x][s2->fnode.y]);

maze[s2->fnode.x][s2->fnode.y].old=0;

}

else

continue;

}

else if(s2->fnode.sign==2)//若在closed表中,则置为old,记下较小的g,并将old从closed 表中移出,将较小的g的节点放入closed表中

{

s2->fnode.old=1;

if(s2->fnode.gfnode.x][s2->fnode.y].g)

{

maze[s2->fnode.x][s2->fnode.y].g=s2->fnode.g;

maze[s2->fnode.x][s2->fnode.y].f=maze[s2->fnode.x][s2->fnode.y].g+maze[s2->fnode.x][s2->fn ode.y].h;

out_closed(maze[s2->fnode.x][s2->fnode.y]);

in_closed(maze[s2->fnode.x][s2->fnode.y]);

maze[s2->fnode.x][s2->fnode.y].old=0;

}

else

continue;

}

else//若即不再open表中也不在closed表中,则将此节点放入open表中,并计算此节点的f值

{

in_open(maze[s2->fnode.x][s2->fnode.y]);

maze[s2->fnode.x][s2->fnode.y].f=maze[s2->fnode.x][s2->fnode.y].g+maze[s2->fnode.x][s2->fn ode.y].h;

}

s2=s2->next;

}

s2=successor;

}

}

else

printf("error!!This maze does not have the answer!");

return(0);

}

实验内容:

以一个m × n的长方阵表示迷宫,0 和1 分别表示迷宫中的通路和障

碍。设计一个程序,对任意设定的迷宫,求出一条从入口到出口的通

路,或得出没有通路的结论。

要求:首先实现一个顺序或链表做存储结构的栈类型,然后编写一个

求解迷宫的非递归程序。求得的通路以三元组(i, j, d)的形式输出,其

中:(i, j)表示迷宫的坐标,d 表示走到下一坐标的方向。如对下面的

迷宫,输出的一条通路为:(1,1,1),(1,2,2),(2,2,2),(3,

2,3),(3,1,2),…...

迷宫约定,x 方向为行方向,y 方向为列方向,迷宫开始坐标(左上

角)为(1,1)。

基本相同;#include

#include

#include

typedef struct QElemType

{

int x,y;

struct QElemType *parent;//用于存储节点的前一个节点

} QElemType;

typedef struct QNode//队列节点

{

QElemType *data;

struct QNode *next;

} QNode, *QueuePtr;

typedef struct

数据结构习题解答

第一章概论自测题答案 一、填空题 1. 数据结构是一门研究非数值计算的程序设计问题中计算机的操作对象以及它们之间的关系和运算等的学科。 2. 数据结构被形式地定义为(D, R),其中D是数据元素的有限集合,R是D上的关系有限集合。 3. 数据结构包括数据的逻辑结构、数据的存储结构和数据的运算这三个方面的内容。 4. 数据结构按逻辑结构可分为两大类,它们分别是线性结构和非线性结构。 5. 线性结构中元素之间存在一对一关系,树形结构中元素之间存在一对多关系,图形结构中元素之间存在多对多关系。 6.在线性结构中,第一个结点没有前驱结点,其余每个结点有且只有1个前驱结点;最后一个结点没有后续结点,其余每个结点有且只有1个后续结点。 7. 在树形结构中,树根结点没有前驱结点,其余每个结点有且只有1个前驱结点;叶子结

点没有后续结点,其余每个结点的后续结点数可以任意多个。 8. 在图形结构中,每个结点的前驱结点数和后续结点数可以任意多个。 9.数据的存储结构可用四种基本的存储方法表示,它们分别是顺序、链式、索引和散列。 10. 数据的运算最常用的有5种,它们分别是插入、删除、修改、查找、排序。 11. 一个算法的效率可分为时间效率和空间效率。 二、单项选择题 (B)1. 非线性结构是数据元素之间存在一种: A)一对多关系B)多对多关系 C)多对一关系D)一对一关系 ( C )2. 数据结构中,与所使用的计算机无关的是数据的结构; A) 存储B) 物理 C) 逻辑D) 物理和存储 (C)3. 算法分析的目的是:

A) 找出数据结构的合理性 B) 研究算法中的输入和输出的关系 C) 分析算法的效率以求改进 D) 分析算法的易懂性和文档性 (A)4. 算法分析的两个主要方面是: A) 空间复杂性和时间复杂性 B) 正确性和简明性 C) 可读性和文档性 D) 数据复杂性和程序复杂性 ( C )5. 计算机算法指的是: A) 计算方法 B) 排序方法 C) 解决问题的有限运算序列 D) 调度方法 (B)6. 计算机算法必须具备输入、输出和等5个特性。 A) 可行性、可移植性和可扩充性 B) 可行性、确定性和有穷性 C) 确定性、有穷性和稳定性 D) 易读性、稳定性和安全性

WORD上机操作题档

WORD上机操作题档 WORD上机操作题 2006-11-20 17:23 以下为WORD上机操作题,红色文字为操作,请把黑色部分文字或表格复制到 一空白WORD文档中进行操作。 第一题 1、将第一段“在当今信息时代,计…”的行间距设置为“固定值”、“20磅” 2、将文档的标题“前言”设置为“加粗” 3、将文档的第二段“目前,在我们的教师队伍中…”与第三段“计算机辅助教学,在现…”的内容交换位置 4、将文档中的“计算机辅助教学”全部都替换为“CAI” 5、在文档最后创建一个3×3的空表格 前言 在当今信息时代,计算机技术及其应用以一种文化形态渗入人们工作和生活的各个领域,并成为衡量一个社会现代化程度高低的重要标志。在这种情况下,广大教师作为社会文明的传播者和现代化人才的培养者,他们对计算机知识的掌握、运用以及相关素质的状况,不仅关系到下一代能否适应社会发展的需要,而且在很大程度上也直接影响到我国的现代化进程。 目前,在我们的教师队伍中,应用计算机辅助教学的能力尚处于一个较低水平,有些教师虽然进行了初步的计算机知识培训,掌握了一定的计算机基础知识,但由于所学知识的针对性较差,在教学过程中无法实践,以致学用脱节。毫无疑问,要尽快改变这种现状就应该在近阶段提高广大教师的素质。

计算机辅助教学,在现代化教学过程中用途最广,并将逐步成为教师在教学中的得力工具。长期以来,计算机辅助教学的课件大多由计算机专业人员制作开发,而在教学中最有发言权的教师的主观能动性却没有发挥出来。事实上,教师应成为开发和应用教学辅助软件的主要力量,没有教师参与开发和使用辅助教学软件,计算机在教育领域中的作用不可能真正发挥出来。有关专家对目前教学软件状况所作的“数量不少,缺乏精品,实用性差”的评价充分说明了这一点。要使情况得到根本转变,加强教师计算机辅助教学知识的培训十分必要。 第二题 1、将第一段“在当今信息时代,计…”的行间距设置为“固定值”、“20磅” 2、将文档的标题“前言”设置为“居中”对齐方式 3、将文档的标题“前言”设置为“黑体”、“三号” 4、将第二段“目前,在我们的教师队伍中,………”首行缩进两个汉字(0.75厘米,不能使用空格代替缩进) 5、删除表格中的最后一行 前言 在当今信息时代,计算机技术及其应用以一种文化形态渗入人们工作和生活的各个领域,并成为衡量一个社会现代化程度高低的重要标志。在这种情况下,广大教师作为社会文明的传播者和现代化人才的培养者,他们对计算机知识的掌握、运用以及相关素质的状况,不仅关系到下一代能否适应社会发展的需要,而且在很大程度上也直接影响到我国的现代化进程。 目前,在我们的教师队伍中,应用计算机辅助教学的能力尚处于一个较低水平,有些教师虽然进行了初步的计算机知识培训,掌握了一定的计算机基础知识,但由于所学知识的针对性较差,在教学过程中无法实践,以致学用脱节。毫无疑问,要尽快改变这种现状就应该在近阶段提高广大教师的素质。

数据结构实验报告-答案

数据结构(C语言版) 实验报告

专业班级学号姓名 实验1 实验题目:单链表的插入和删除 实验目的: 了解和掌握线性表的逻辑结构和链式存储结构,掌握单链表的基本算法及相关的时间性能分析。 实验要求: 建立一个数据域定义为字符串的单链表,在链表中不允许有重复的字符串;根据输入的字符串,先找到相应的结点,后删除之。 实验主要步骤: 1、分析、理解给出的示例程序。 2、调试程序,并设计输入数据(如:bat,cat,eat,fat,hat,jat,lat,mat,#),测 试程序的如下功能:不允许重复字符串的插入;根据输入的字符串,找到相应的结点并删除。 3、修改程序: (1)增加插入结点的功能。 (2)将建立链表的方法改为头插入法。 程序代码: #include"" #include"" #include"" #include"" typedef struct node . . 示意图:

head head head 心得体会: 本次实验使我们对链表的实质了解更加明确了,对链表的一些基本操作也更加熟练了。另外实验指导书上给出的代码是有一些问题的,这使我们认识到实验过程中不能想当然的直接编译执行,应当在阅读并完全理解代码的基础上再执行,这才是实验的意义所在。

实验2 实验题目:二叉树操作设计和实现 实验目的: 掌握二叉树的定义、性质及存储方式,各种遍历算法。 实验要求: 采用二叉树链表作为存储结构,完成二叉树的建立,先序、中序和后序以及按层次遍历 的操作,求所有叶子及结点总数的操作。 实验主要步骤: 1、分析、理解程序。 2、调试程序,设计一棵二叉树,输入完全二叉树的先序序列,用#代表虚结点(空指针), 如ABD###CE##F##,建立二叉树,求出先序、中序和后序以及按层次遍历序列,求 所有叶子及结点总数。 实验代码 #include"" #include"" #include"" #define Max 20 ertex=a; irstedge=NULL; irstedge; G->adjlist[i].firstedge=s; irstedge; R[i] 留在原位

数据结构上机例题及答案

习题二 ⒉1描述以下四个概念的区别:头指针变量,头指针,头结点,首结点(第一个结点)。解:头指针变量和头指针是指向链表中第一个结点(头结点或首结点)的指针;在首结点之前附设一个结点称为头结点;首结点是指链表中存储线性表中第一个数据元素的结点。若单链表中附设头结点,则不管线性表是否为空,头指针均不为空,否则表示空表的链表的头指针为空。 2.2简述线性表的两种存储结构有哪些主要优缺点及各自使用的场合。 解:顺序存储是按索引直接存储数据元素,方便灵活,效率高,但插入、删除操作将引起元素移动,降低了效率;而链式存储的元素存储采用动态分配,利用率高,但须增设表示结点之间有序关系的指针域,存取数据元素不如顺序存储方便,但结点的插入和删除十分简单。顺序存储适用于线性表中元素数量基本稳定,且很少进行插入和删除,但要求以最快的速度存取线性表中的元素的情况;而链式存储适用于频繁进行元素动态插入或删除操作的场合。 2.3 在头结点为h的单链表中,把值为b的结点s插入到值为a的结点之前,若不存在a,就把结点s插入到表尾。 Void insert(Lnode *h,int a,int b) {Lnode *p,*q,*s; s=(Lnode*)malloc(sizeof(Lnode)); s->data=b; p=h->next; while(p->data!=a&&p->next!=NULL) {q=p; p=p->next; } if (p->data==a) {q->next=s; s->next=p;} else

{p->next=s; s->next=NULL; } } 2.4 设计一个算法将一个带头结点的单链表A分解成两个带头结点的单链表A和B,使A中含有原链表中序号为奇数的元素,而B中含有原链表中序号为偶数的元素,并且保持元素原有的相对顺序。 Lnode *cf(Lnode *ha) {Lnode *p,*q,*s,*hb; int t; p=ha->next; q=ha; t=0; hb=(Lnode*)malloc(sizeof(Lnode)); s=hb; while(p->next!=NULL) {if (t==0) {q=p;p=p->next;t=1;} else {q->next=p->next; p->next=s->next; s->next=p; s=p; p=p->next; t=0; } } s->next=NULL; return (hb); }

数据结构题集c语言版答案严蔚敏吴伟民[1]

16 void Descend(int &x, int &y, int &z) { int t; if(x

while(result[i].sport!=NULL) { switch(result[i].schoolname) { case 'A': score[0].totalscore+=result[i].score; if(result[i].gender==male) score[0].malescore+=result[i].score; else score[0].femalescore+=result[i].score; break; case 'B': score[1].totalscore+=result[i].score; if(result[i].gender==male) score[1].malescore+=result[i].score; else score[1].femalescore+=result[i].score; break; case 'C': score[2].totalscore+=result[i].score; if(result[i].gender==male) score[2].malescore+=result[i].score; else score[2].femalescore+=result[i].score; break; case 'D': score[3].totalscore+=result[i].score; if(result[i].gender==male) score[3].malescore+=result[i].score; else score[3].femalescore+=result[i].score; break; case 'E': score[4].totalscore+=result[i].score; if(result[i].gender==male) score[4].malescore+=result[i].score; else score[4].femalescore+=result[i].score; break; } i++; } for(s='A';s<='E';s++) { printf("School %c:\n",s); printf("Total score of male:%d\n",score[i].malescore); printf("Total score of female:%d\n",score[i].femalescore); printf("Total score of all:%d\n\n",score[i].totalscore); } } 19 Status Series(int ARRSIZE, int a[])

word上机操作练习题

word 上机操作练习题(一) 输入下面的文章内容”,对该文件进行格式设置要求如下:完成后保存到自己文件夹中。 (1):将标题分为两行,字符格式设置为二号、蓝色、黑体,并添加阴影,居中对齐。 (2):将“讲座主题”、“主讲专家”、“讲座时间”、“讲座地点”等字符格式设置为楷体、加粗、四号、红色并添加下划线。后面的字符格式设置为楷体、加粗、倾斜、四号。 (3):行距设置为“固定值27磅” (4):将该文档第一自然段的首字“网”设置为字符下沉2行,距正文厘米、字体为黑体。 (5):正文对齐方式设置为“左对齐” (6):在“讲座主题”、“主讲专家”、“讲座时间”、“讲座地点”4段文字首行缩进两个字符,然后再在这四段文字之前添加项目符号。(效果如下图所示) 网络技术学院计算机系专家讲座消息预告 网络和计算机的广泛应用带给我们带来全球性的信息革命。需要球的国际互联网的迅速发展。给信息利用者带来了深远的影响。…………. 讲座主题:

主讲专家: 讲座时间: 讲座地点:二、效果图

word 上机操作练习题(二) (选做几题就行) 【例3-11 】:将以下素材按要求排版。 (1)、将标题字体设置为“华文行楷”,字形设置为“常规”,字号设置为“小初”、选定“效果”为“空心字”且居中显示。 (2)、将“陶渊明”的字体设置为“隶书”、字号设置为“小三”,文字右对齐加双曲线边框,线型宽度应用系统默认值显示。 (3)将正文行距设置为25磅。 【素材】: 归去宋辞 ——陶渊明

归去来兮!田园将芜胡不归既自以心为形役,奚惆怅而独悲悟已往之不谏,知来者之可追;实迷途其未远,觉今是而昨非。舟摇摇以轻殇,风飘飘而吹衣。问征夫以前路,恨晨光之熹微。乃瞻衡宇,栽欣载奔。童仆欢迎,稚子候门。三径就荒,松菊犹存。携幼入室,有酒盈樽。引壶觞以自酌,眇庭柯以怡颜。倚南窗以寄傲,审容膝之易安。园日涉以成趣,门虽设而常关。策扶老以流憩,时翘首而遐观。云无心以出岫,鸟倦飞而知还。暑翳翳以将入,抚孤松而盘桓。 【例3-12 】将以下素材按要求排版。 (1)设置第一段首字下沉。 (2)将第一段(除首字)字体设置为“宋体”,字号设置为“五号”。 (3)将第二段字体设置为“方正舒体”,字号设置为“四号”,加双横线下划线。 【素材】 归去来兮,请息交以绝游。世与我而相遗,复驾言兮焉求悦亲戚之情话,乐琴书以消忧。农人告余以春兮,将有事乎西畴。或命巾车,或棹孤舟。既窈窕以寻壑,亦崎岖而经丘。木欣欣以向荣,泉涓涓而始流。羡万物之得时,感吾生之行休。 己矣乎!寓形宇内复几时何不委心任去留胡为惶惶欲何之富贵非吾愿,帝乡不可期。怀.良辰以孤往,或执杖而耘耔。登东坳以舒啸,临清流而赋诗。聊乘化以归尽,采夫天命复奚疑 【例3-13 】将以下素材按要求排版。 (1)将标题“闲情赋”字体设置为“幼圆”,字号设置为“小二”,居中显示。

数据结构上机答案(c语言版)

实习一: 1、编写一个读入一个字符串,把它存入一个链表,并按相反的次序打印的程序。 2、设有一个单位的人员工资有如下信息:name、department、 base pay、allowance、total。现从键盘输入一组人员工资数据并将它们存储到名为paydata的文件中;再从paydata取出工资数据并给每个人的base pay增加100元,增加后将工资数据显示于屏幕(每行1人)。请编写能够完成上述工作的程序。 代码如下: 1.#include #include #include void main() { char x; struct node //定义个结构node { char c; struct node *next; }; struct node *head,*pb,*pf,*p,*s,*t; //定义指针 printf("请输入字符串,按Enter结束!\n"); for(int i=0;x!='\n';i++) { pb=(struct node *)malloc(sizeof(struct node));//动态分配n字节的内存空间 scanf("%c",&pb->c); //输入字符 x=pb->c; if(i==0){ //输入的首个字符作为头结点pf head=pb; pf=head;} else if(pb->c!='\n'){ //如果输入的是Enter,输入终止,否则把字符依次存入链表 pf->next=pb; //把输入的字符pb存在pf后,pb后为空 pb->next=NULL;

经典数据结构上机题_答案解析

数据结构上机实验题目 实验一线性表的顺序存储结构 实验学时 2学时 背景知识:顺序表的插入、删除及应用。 目的要求: 1.掌握顺序存储结构的特点。 2.掌握顺序存储结构的常见算法。 实验容 1.输入一组整型元素序列,建立顺序表。 2.实现该顺序表的遍历。 3.在该顺序表中进行顺序查找某一元素,查找成功返回1,否则返回0。4.判断该顺序表中元素是否对称,对称返回1,否则返回0。 5.实现把该表中所有奇数排在偶数之前,即表的前面为奇数,后面为偶数。 6.输入整型元素序列利用有序表插入算法建立一个有序表。 7.利用算法6建立两个非递减有序表并把它们合并成一个非递减有序表。 8. 利用该顺序结构实现循环队列的入队、出队操作。 8.编写一个主函数,调试上述算法。 #include #include

#define OVERFLOW 0 #define MAXSIZE 100 typedef int ElemType; typedef struct list {ElemType elem[MAXSIZE]; int length; }Sqlist; void Creatlist(Sqlist &L) {int i; printf("请输入顺序表的长度:"); //输入一组整型元素序列,建立一个顺序表。 scanf("%d",&L.length); for(i=0;i

数据结构题集与答案

判断题 1.数据的逻辑结构与数据元素本身的容和形式无关。(√) 2.一个数据结构是由一个逻辑结构和这个逻辑结构上的一个基本运算集构成的整体。(√) 3.数据元素是数据的最小单位。(√) 4.数据的逻辑结构和数据的存储结构是相同的。(×) 5.程序和算法原则上是没有区别的,所以在讨论数据结构时可以通用。(×) 6.从逻辑关系上讲,数据结构主要分为线性结构和非线性结构。(√) 7.数据的存储结构是数据的逻辑结构的存储映像。(×) 8.数据的物理结构是指数据在计算机实际的存储形式。(√) 9.数据的逻辑结构是依赖于计算机的。(×) 10.算法是对解题方法和的描述步骤。(√) 填空题: 1.数据有逻辑结构和存储结构两种结构。 2.数据逻辑结构除了集合以外,还包括线性结构、树形结构和图形结构。 3.数据结构按逻辑结构可分为两大类,它们是线性结构和非线性结构。 4.树形结构和图形结构合称为非线性结构。 5.在树形结构中,除了树根结点以外,其余每个结点只有 1 个前驱结点。 6.在图形结构中,每个结点的前驱结点数和后继结点数可以任意多个。 7.数据的存储结构又叫物理结构。 8.数据的存储结构形式包括顺序存储、链式存储、索引存储和散列存储。 9.线性结构中的元素之间存在一对一的关系。 10.树形结构中的元素之间存在一对多的关系。 11.图形结构的元素之间存在多对多的关系。 12.数据结构主要研究数据的逻辑结构、存储结构和算法(或运算)3个方面 的容。 13.数据结构被定义为(D,R),其中D是数据的有限集合,R是D上的关系的 有限集合。 14.算法是一个有穷指令的集合。 15.算法效率的度量可以分为事先估算和事后统计法。 16.一个算法的时间复杂性是算法输入规模的函数。 17.算法的空间复杂度是指该算法所耗费的存储空间,它是该算法求解问题 规模n的函数。 18.若一个算法中的语句频度之和为T(n)=6n+3nlog2n,则算法的时间复杂度为O (nlog2n )。 若一个算法中的语句频度之和为T(n)=3n+nlog2n+n2,则算法的时间复杂度为 ___O(n*n)_______ 。 数据结构是一门研究非数值计算的程序设计总是中计算机的操作对象,以及它们之间的关系和运算的学科。 19.串的两种最基本的存储方式是顺序存储方式链式存储方式。 20.两个串相等的充分必要条件是、长度相等对应位置的字符相同。

word上机操作练习题库

Word 基本操作练习题 1.字处理题 请在"考试项目"菜单上选择"字处理软件使用"菜单项,完成以下内容: ******本题型共有1小题****** 在考生文件夹中,存有文档WT1.DOC,其内容如下: 【文档开始】 本专业培养目标是计算机专业的技术应用型人才,他们应该掌握计算机软件、硬件及系统的基本理论、基本方法和基本技能,能够从事计算机及相关领域应用技术工作、软、硬件维护、和一般应用系统的开发及设计,他们应该具有专业化计算机人的素质,是全面发展的社会主义建设人才。 【文档结束】 按要求完成下列操作: (1)请将Word文档WT1.DOC设成楷体、小三号字并加粗、斜体。 (2)设置A4(210mm×297mm)纸张大小,左右边距设置为2.5厘米,页眉2.2厘米,其余页面设置的参数不必修改。保存文件为WD1.DOC。 2.请在"考试项目"菜单上选择"字处理软件使用"菜单项,完成以下内容: ******本题型共有4小题****** 1. 在考生文件夹中,存有文档WT 2.DOC,其内容如下: 【文档开始】 面向对象方法基于构造问题领域的对象模型,以对象为中心构造软件系统。它的基本方法是用对象模拟问题领域中的实体,以对象间的联系刻画实体间的联系。因为面向对象的软件系统的结构是根据问题领域的模型建立起来的,而不是基于对系统应完成的功能的分解,所以,当对系统的功能需求变化时并不会引起软件结构的整体变化,往往仅需要一些局部性的修改。例如,从已有类派生出一些新的子类以实现功能扩充或修改,增加删除某些对象等等。总之,由于现实世界中的实体是相对稳定的,因此,以对象为中心构造的软件系统也是比较稳定的。 【文档结束】 按要求完成下列操作:新建文档WD2.DOC,插入文件WT2.DOC的内容,设置为小四号仿宋_GB2312字体,分散对齐,所有"对象"设置为黑体、加粗,存储为文件WD2.DOC。 2. 新建文档WD2A.DOC,插入文件WD2.DOC的内容,将正文部分复制2次,将前两段合并为一段,并将此段分为3栏,栏宽相等,栏宽为 3.45厘米,栏间加分隔线。存储为文件 WD2A.DOC。 3. 制作3行4列表格,列宽2厘米,行高1厘米。填入数据,水平方向上文字为居中对齐,数 4. 并将第4行设置为黄色底纹,统计1、2、3列的合计添加到第4行,存储为文件WD2C.DOC。 请在"考试项目"菜单上选择"字处理软件使用"菜单项,完成以下内容: ******本题型共有2小题****** 3. 在指定文件夹下打开文档WT3.DOC,其内容如下: 【文档开始】

数据结构上机考试题

注意事项1. 考试时间2小时,13:00-15:00 2. 题目4选2 3. 所有题目均使用标准输入和标准输出3. 只提交源程序,文件后缀名只能是.C或.CPP 4. 源文件大小不能超过10K,否则会被当作恶意提交而扣分5. 严格按照题目要求输出,去掉不需要的提示信息或调试信息6. 在程序中不要使用fflush(stdin)函数,否则会导致结果错误另外注意:本次是模拟测试,上机时间是4个小时,我们考试时间从14点开始到17点30分结束。同学视自己的能力,能做几道做几道。 哈夫曼树 时间限制: 100 second 内存限制: 100 Kb 描述 构造哈夫曼树(最优二叉树) 输入 输入n个结点每个结点的权值 输出 构造哈夫曼树(是最优二叉树)得到每个结点的哈夫曼编码 输入样例 23 186 64 13 22 32 103 21 15 47 57 1 5 32 20 57 63 15 1 48 51 80 23 8 输出样例 1( 186):00 2( 64):1001 3( 13):101100 4( 22):110010 5( 32):11100 6( 103):011 7( 21):110001 8( 15):101101 9( 47):11010 10( 57):0101 11( 1):101111000 12( 5):10111101 13( 32):11101 14( 20):110000 15( 57):1010 16( 63):1000 17( 15):101110 18( 1):101111001 19( 48):11011 20( 51):0100 21( 80):1111 22( 23):110011 23( 8):1011111 提示 输入第一行是结点数23 第二行是这几个结点的权值输出格式为结点号(权值):哈夫曼编码

数据结构习题与答案

第 1 章绪论 课后习题讲解 1. 填空 ⑴()是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。 【解答】数据元素 ⑵()是数据的最小单位,()是讨论数据结构时涉及的最小数据单位。 【解答】数据项,数据元素 【分析】数据结构指的是数据元素以及数据元素之间的关系。 ⑶从逻辑关系上讲,数据结构主要分为()、()、()和()。 【解答】集合,线性结构,树结构,图结构 ⑷数据的存储结构主要有()和()两种基本方法,不论哪种存储结构,都要存储两方面的内容:()和()。 【解答】顺序存储结构,链接存储结构,数据元素,数据元素之间的关系 ⑸算法具有五个特性,分别是()、()、()、()、()。 【解答】有零个或多个输入,有一个或多个输出,有穷性,确定性,可行性 ⑹算法的描述方法通常有()、()、()和()四种,其中,()被称为算法语言。 【解答】自然语言,程序设计语言,流程图,伪代码,伪代码 ⑺在一般情况下,一个算法的时间复杂度是()的函数。 【解答】问题规模 ⑻设待处理问题的规模为n,若一个算法的时间复杂度为一个常数,则表示成数量级的形式为(),若为n*log25n,则表示成数量级的形式为()。 【解答】Ο(1),Ο(nlog2n) 【分析】用大O记号表示算法的时间复杂度,需要将低次幂去掉,将最高次幂的系数去掉。 2. 选择题 ⑴顺序存储结构中数据元素之间的逻辑关系是由()表示的,链接存储结构中的数据元素之间的逻辑关系是由()表示的。 A 线性结构 B 非线性结构 C 存储位置 D 指针 【解答】C,D 【分析】顺序存储结构就是用一维数组存储数据结构中的数据元素,其逻辑关系由存储位置(即元素在数组中的下标)表示;链接存储结构中一个数据元素对应链表中的一个结点,元素之间的逻辑关系由结点中的指针表示。

WORD上机练习题目

一、Word 部分 要求把Word 部分制作的所有内容保存在同一个Word 文档中,文档以文件名“ks4.doc ”命名,并保存在“我的工作1”文件夹中。 文字处理部分 1) 请录入以下对金山毒霸介绍的文字; 2) 设置正文为仿宋体小四号字。段落首行缩进两个汉字,行距为2倍行距,效果如下所示; 3) 设置标题为艺术字,对正文进行分栏,分为两栏,栏间距为5字符,效果如下所示; 4) 插入如图所示自选图形,效果如下所示。 金山毒霸除了可查杀传统的Windows 病毒和Word 、Excel 外,还能查杀国内其它反病毒软件还不能查的Access 97、 PowerPoint 97、Word 2000宏病毒,以及Java 、HTML 、VBScript 、JavaScript 等多种新型病毒。可查杀上百种黑客程序、特洛伊木马和蠕虫病毒及变种,能够在黑客 除,无需重新启动到纯 DOS 下清除。 1.在Word 中制作如下所示的表格 2. 在Word 中制作如右所示的公式 二、Word 部分 ) (1 2d ce dc off on d V V V T T T T T V +---+= ?

1.请在Word中正确录入如上所示文本内容,录入完成后该文档以文件名file2.doc保存在“我的工作A”文件夹中;要求:在标题前插入两行内容,分别录入“学号:”、“姓名:”,并在其后分别录入考生自己的学号及姓名; 2.打开file2.doc文档,再完成如下排版设计:文档用B5纸打印;上下左右边距均取2cm;一级标题用黑体小三号粗体居中对齐;二级题用楷书四号;段前段后的间距为6磅;正文用宋体五号两端对齐,首行缩进0.84cm,行距设为1.5倍行距; 3.Word表格编辑(1) 1)请在file2.doc文档的文本内容末尾创建如上所示的表格内容,并用公式计算出实发工资; 2)文本内容居中对齐、宋体小四号粗体(数字粗斜体红色);整个表格居中对齐;将整表转换成双线格式;将表格按实发工资进行升序排序。 4.Word表格编辑(2) 打开file2.doc文档,在文本内容末尾创建如下表格。要求:标题为隶书、四号、加粗;表中汉字字体为宋体、五号;英文及数字字体为Times New Roman、五号;对齐方式为居中。

数据结构上机考试(含答案)

《数据结构》上机练习题 1、设有两个有序序列,利用归并排序将它们排成有序表,并输出。 2、设有一有序序列,从键盘输入一个数,判别是否在序列中,如果在输出“YSE”;否则,将它插入到序列中使它仍然有序,并输出排序后的序列。 3、设有一有序序列,从键盘输入一个数,判别是否在序列中,如果不在,则输出“NO”,否则,将它从序列中删除它,并输出删除后的序列。 4、从键盘输入一组任意数据,建立一个有序链表,并从链头开始输出该链,使输出结果是有序的。 5、从键盘输入一组任意数据,建立一个包含所有输入数据的单向循环链表,并从链表的任意开始,依次输出该链表中的所有结点。 10、设有一个链表,(自己建立,数据从键盘输入),再从键盘输入一个数,判别是否在链表中,如果不在,则输出“NO“,否则,将它从链表中删除,并输出删除后的链表。 11、设有一个链表,(自己建立,数据从键盘输入),再从键盘输入一个数,判别是否在链表中,如果在输出“YSE”,否则,将它从插入到链头,并输出插入后的链表。 12、设有一个链表,(自己建立,数据从键盘输入),再从键盘输入一个数,判别是否在链表中,如果在输出“YSE”,否则,将它从插入到链尾,并输出插入后的链表。 13、编写栈的压栈push、弹栈pop函数,从键盘输入一组数据,逐个元素压入堆栈,然后再逐个从栈中弹出它们并输出。 14、编写栈的压栈push、弹栈pop函数,用它判别()的匹配问题。 15、按类似先序遍历结果输入一序列,建立一棵二叉树(算法6、4),输出二叉树中序遍历的结果。 16、按类似先序遍历结果输入一序列,建立一棵二叉树(算法6、4),输出二叉树先序遍历的结果。 17、按类似先序遍历结果输入一序列,建立一棵二叉树(算法6、4),输出二叉树后序遍历的结果。 18、按类似先序遍历结果输入一序列,建立一棵二叉树(算法6、4),输出二叉树的总结点数。 19、按类似先序遍历结果输入一序列,建立一棵二叉树(算法6、4),输出二叉树叶子结点数。 20、按类似先序遍历结果输入一序列,建立一棵二叉树(算法6、4),输出此二叉树的高度。 21、给出一个无向图的邻接矩阵,输出各个顶点的度。 22、给出一个有向图的邻接矩阵,输出各个顶点的入度与出度。 23、输入一个有序序列,利用折半查找来查找一个数是否在序列中,如在,则输出其位置,否则输出“NO”。 24、用插入排序方法对一组数据进行排序,并输出每趟排序的结果。 25、用选择排序方法对一组数据进行排序,并输出每趟排序的结果。 26、用希尔(SHELL)排序方法对一组数据进行排序,并输出每趟排序的结果。 27、用快速排序方法对一组数据进行排序,并输出每趟排序的结果。. 答案: 1. #include #include #define N 5 #define NULL 0

数据结构题集答案复习过程

数据结构题集答案

数据结构题集 第一章绪论 一、单选题 1.在数据结构中,从逻辑上可以把数据结构分成【 C 】。 A.动态结构和静态结构 B.紧凑结构和非紧凑结构 C.线性结构和非线性结构 D.内部结构和外部结构 2.数据结构在计算机内存中的表示是指【 A 】。 A.数据的存储结构 B.数据结构 C.数据结构的逻辑结构 D.数据元素之间的关系 3. 【 A 】是数据的最小单位,【 B 】是数据的基本单位。 A.数据项 B.数据元素 C.信息项 D.表元素 4. 计算机所处理数据一般具有某种内在联系,这是指【 B 】。 A.数据与数据之间存在某种关系 B.数据元素与数据元素之间存在某种关系 C.元素内部存在某种结构 D.数据项与数据项之间存在某种关系 5.算法分析的目的是【 C 】。 A.找出数据结构的合理性 B.研究输入和输出的关系 C.分析算法的效率以求改进 D.分析算法的易懂性 6.在存储数据时,不仅要考虑存储各数据元素的值,而且还要存储【 C 】。 A.数据处理的方法 B.数据元素的类型 C.数据元素之间的关系 D.数据的存储方法

7.算法分析的主要任务是分析【 D 】。 A.算法是否具有较好的可读性 B.算法中是否存储语法错误和逻辑错误 C.算法的功能是否符合设计要求 D.算法的执行时间与问题规模之间的关系。 8.数据的运算【 A 】。 A.效率与采用何种存储结构有关 B.是根据存储结构来定义的 C.有算术运算和关系运算两大类 D.必须用程序设计语言来描述 9.算法的计算量的大小称为算法的【 B 】。 A.效率 B.时间复杂度 C.现实性 D.难度 10.连续存储分配时,存储单元的地址【A 】。 A.一定连续 B.一定不连续 C.不一定连续 D.部分连续,部分不连续 二、判断题 1.数据元素是数据结构的最小单位【.×】。 2.数据的逻辑结构说明数据元素之间的顺序关系,它依赖于计算机的存储结构【×.】。 3.数据的逻辑结构指数据元素的各数据项之间的逻辑关系【×.】。 4.算法的优劣与算法的描述语言无关,但与使用的计算机有关【.×】。 5.数据结构的抽象操作的定义与具体实现有关【.×】。

2015Word期末考试上机操作题

2015学年北京企业管理研修学院 新思维全网创业班期末考试试卷 Microsoft Office Word (上机部分) 注意事项:1、本科分笔试部分和上机部分。总分100分,笔试部分50分。 2、本科上机部分满分50分。 3、新建一个文档操作下列各题。 Word 操作题一:(共20分) 网络发展面临的挑战 1、网络投资 近来,网络投资日渐升温,有一种说法认为,目前中国网络热潮已经到来,如果发展符合,“中国有可能做到网络第一”。但是很多专家认为,网络接入存在瓶颈,内容提供少得可怜,仍然制约着网络的推进与发展,其实真正的赢利方式以及不同运营之间的利益分配比例,都有待于进一步的探讨和实践。 2、网络接入热潮原因 中国出现网络接入热潮,很大一个原因是由于以太网不像中国电信骨干网或者有线电视网那样受到控制,其接入谁都可以做,而国家目前却没有相应的法律法规来管理。房地产业的蓬勃发展的兴起以及互联网用户的激增,都为网络市场提供了一个难得的历史机会。 3、Office 办公 Microsoft Office 首开办公集成软件之先河,深受广大用户的钟爱,至今青睐有加。它将极富特色的应用程序有机地集成到一起,浑然天成,而且更胜一筹。 所有这一切归结为最根本的一点:Microsoft Office 使您可以方便地极尽软件所能,集

Word操作题二:(共10分) 在文档建立如下的表格: 1、插入一个8行7列表格。 2、调整行高与列宽: 第一行行高为22磅、第4、7行行高为5磅;其余均为35磅。 第一列列宽为1厘米、第二列列宽为2厘米;其余各列1.4厘米。 4、按表样所示合并单元格; 5、按要求填充颜色: 左上角单元格:绿色. 第4、7行:红色 第一列:20%灰色. 第1行、第2列:黄色. 6、设置表格线:周边粗线1.5磅;其余细线0.5磅. Word操作题三:(共20分) 按下列要求操作: 1、录入文字,如下图“样张”所示。 2、将“计算N!的算法”设置为艺术字,楷体40号,加粗,居中,如样张所示。 3、将Step1~Step5设置为项目符号,项目符号缩进2字符,文字的起始位置为4字 符。字体设置为黑体小四号。 4、在文中插入自选图形,如样张所示。 5、“开始”和“结束”为圆角矩形,宽2cm高0.8cm,填充颜色为浅绿色,透明度50%, 边框线为1磅绿色; 6、平行四边形宽3cm高0.8cm,边框线为3磅蓝色双线; 7、其它矩形宽3cm高0.8cm; 8、菱形宽4高1cm,其内部文本框上下内部边距为0cm。 9、所有的自选图形中的文字居中对齐。使用连接符在自选图形中进行连接,箭头使用箭头1(最小的箭头),粗细1磅。 10、将自选图形的圆角矩形、矩形、菱形和平行四边形水平居中对齐(图形的中心线 在一条直线上),并将该图形组合为一个整体。 11、将画布的版式设置为四周型。 12、加入如样张所示的表格,表格宽度为6cm,将表格的版式设置为环绕型,使表格置 于流程图右侧。第一行和最后一行的单元格填充色为浅绿色,与相邻行的分割线为双线。第一行中的文字加粗。

数据结构课程__课后习题答案

《数据结构简明教程》练习题及参考答案 练习题1 1. 单项选择题 (1)线性结构中数据元素之间是()关系。 A.一对多 B.多对多 C.多对一 D.一对一 答:D (2)数据结构中与所使用的计算机无关的是数据的()结构。 A.存储 B.物理 C.逻辑 D.物理和存储 答:C (3)算法分析的目的是()。 A.找出数据结构的合理性 B.研究算法中的输入和输出的关系 C.分析算法的效率以求改进 D.分析算法的易懂性和文档性 答:C (4)算法分析的两个主要方面是()。 A.空间复杂性和时间复杂性 B.正确性和简明性 C.可读性和文档性 D.数据复杂性和程序复杂性 答:A (5)计算机算法指的是()。 A.计算方法 B. 排序方法 C.求解问题的有限运算序列 D.调度方法答:C (6)计算机算法必须具备输入、输出和()等5个特性。 A.可行性、可移植性和可扩充性 B.可行性、确定性和有穷性 C.确定性、有穷性和稳定性 D.易读性、稳定性和安全性 答:B 2. 填空题 (1)数据结构包括数据的①、数据的②和数据的③这三个方面的内容。 答:①逻辑结构②存储结构③运算

数据结构简明教程 (2)数据结构按逻辑结构可分为两大类,它们分别是①和②。 答:①线性结构②非线性结构 (3)数据结构被形式地定义为(D,R),其中D是①的有限集合,R是D上的②有限集合。 答:①数据元素②关系 (4)在线性结构中,第一个结点①前驱结点,其余每个结点有且只有1个前驱结点;最后一个结点②后继结点,其余每个结点有且只有1个后继结点。 答:①没有②没有 (5)在树形结构中,树根结点没有①结点,其余每个结点有且只有②个前驱结点;叶子结点没有③结点,其余每个结点的后继结点数可以是④。 答:①前驱②1 ③后继④任意多个 (6)在图形结构中,每个结点的前驱结点数和后继结点数可以是()。 答:任意多个 (7)数据的存储结构主要有四种,它们分别是①、②、③和④存储结构。 答:①顺序②链式③索引④哈希 (8)一个算法的效率可分为①效率和②效率。 答:①时间②空间 3. 简答题 (1)数据结构和数据类型两个概念之间有区别吗? 答:简单地说,数据结构定义了一组按某些关系结合在一起的数组元素的集合。数据类型不仅定义了一组数据元素,而且还在其上定义了一组操作。 (2)简述线性结构、树形结构和图形结构的不同点。 答:线性结构反映结点间的逻辑关系是一对一的,树形线性结构反映结点间的逻辑关系是一对多的,图在结构反映结点间的逻辑关系是多对多的。 (3)设有采用二元组表示的数据逻辑结构S=(D,R),其中D={a,b,…,i},R={(a,b),(a,c),(c,d),(c,f),(f,h),(d,e),(f,g),(h,i)},问相对于关系R,哪些结点是开始结点,哪些结点是终端结点? 答:该逻辑结构为树形结构,其中a结点没有前驱结点,称为根结点,b、e、g、i结点没有后继结点,是终端结点,也称为叶子结点。 (4)以下各函数是算法中语句的执行频度,n为问题规模,给出对应的时间复杂度: T1(n)=n log2n-1000log2n T2(n)=3 log2 n-1000log2n

相关文档
最新文档