数据结构习题(精选5篇)由网友“啊咧咧”投稿提供,下面是小编给大家带来的数据结构习题,以供大家参考,我们一起来看看吧!
篇1:数据结构习题之绪论
第一章概论
一. 基本要求重点、难点
对本章的学习,主要是要熟悉各名词和术语的含义;掌握各种基本概念,特别是数据结构的逻辑结构、存储结构、数据运算3方面的内容及这3方面的相互关系;熟悉C语言的书写规范,理解算法的5个要素的确切含义,即有穷性、确定性、可行性及有输入、有输出,从而掌握计算语句频度和估计算法时间复杂度的方法等,为学习数据结构打下基础,
二. 考核目标和考核要求
要求达到识记层次的有:数据、数据元素、数据项、数据结构等的基本概念;数据结构的逻辑结构、存储结构及数据运算的含义及其相互关系;数据结构的两大逻辑结构和四种常用的存储表示方法;数据结构在各种软件系统中所起的作用;选择合适的数据结构是解决应用问题的关键步骤。
要求达到理解层次有:算法、算法的时间复杂度和空间复杂度、最坏情况下的时间复杂度和平均时间复杂度等概念;算法的时间复杂度不仅仅依赖于问题的规模,也取决于输入实例的初始状态;算法描述和算法分析的方法,对于一般算法能力分析出时间复杂度。
要求达到简单应用的有:时间复杂度的算法
三. 练习题
1. 单项选择题
1.1在数据结构中,从逻辑上可以把数据结构分为( B )
A) 紧凑结构和非紧凑结构
B) 线性结构和非线性结构
C) 内部结构和外部结构
D) 动态结构和静态结构
数据结构中从逻辑上可以把数据结构分为线性结构和非线性结构
1.2线性表的顺序存储结构是一种( C)的存储结构
A) 顺序存取
B) 索引存取
C) 随机存取
D) 散列存取
线性表的顺序存储结构是一种随机存取的存储结构,线性表的链式存储结构是一种顺序存取的存储结构。
1.3逻辑关系是指数据元素的( A)
A) 关联
B) 存储方式
C) 结构
D) 数据项
1.4下列时间复杂度中最坏的是( D)
A) O(1)
B) O(n)
C) O(log2n)
D) O(n2)
1.5下列时间复杂度最好的是( A)
A) O(1)
B) O(n)
C) O(log2n)
D) O(n2)
1.6下列算法是时间复杂度是( D )
for(i=0;i
for(j=0;j
c[i][j]=i+j;
A) O(1)
B) O(n)
C) O(log2n)
D) O(n2)
1.7算法分析的两个主要方面是( D )
A) 正确性和简明性
B) 数据复杂性和程序复杂性
C) 可读性和可维护性
D) 时间复杂性和空间复杂性
1.8线性表若采用链式存储结构存储时,要求内存中可用存储单元地址( A )
A) 不一定连续的
B) 部分地址必须是连续的
C) 必须是连续的
D) 一定是不连续的
1.9算法指的是( D )
A) 计算机程序
B) 解决问题的计算方法
C) 排序算法
D) 解决问题的有限运算序列
1.10数据的基本单位是( B)
A) 文件
B) 数据元素
C) 符号
D) 关键字
2. 填空题
2.1数据结构一般包括[逻辑结构]、存储结构和数据运算三个方面的内容,
2.2从数据结构S中找出满足条件的结点在S中的位置的运算是[查找]
2.3从数据结构S中读出结构中指定位置上的内容的运算是[读取]
2.4从数据结构S中的某指定位置上增加一个结点的运算是[插入]
2.5从数据结构S中撤消结构中指定位置上结点的运算是[删除]
2.6从数据结构S中修改结构中某指定结点内容的运算是[更新]
2.7数据的存储结构(物理结构)可以用顺序存储、链式存储、[索引存储]及散列存储等四种存储方法表示。
2.8选用算法除了首先考虑“正确性”外,主要考虑[执行算法所需要的时间]、执行算法所需要的存储空间、算法易于理解,易于编程,易于调试
2.9数据结构是研究数据的物理结构和[逻辑运算]以及它们之间的相互关系,并对这种结构定义相应的运算
2.10数据的逻辑结构是从逻辑关系上描述数据,它与数据的[存储结构]无关,是独立于计算机的。
3. 简答题
3.1简述数据与数据元素的关系与区别
答:凡是能被计算机存储、加工的对象统称为数据,数据是一个集合。数据元素是数据的基本单位,是数据的一个元素。数据元素与数据之间的关系是元素与集合之间的关系。
3.2简述数据、数据元素、数据类型、数据结构、存储结构、线性结构、非线性结构的概念
答:数据:数据是信息的载体,它能够被计算机识别、存储和加工处理
数据元素:是数据的基本单位。有时一个数据元素包含几个数据项
数据类型:是一个值的集合以及在这些值上定义的一组操作的总称
数据结构:指的是数据之间的逻辑关系也称数据的逻辑结构。它包括线性结构和非线性结构两大类。
存储结构:数据元素及其关系在计算机存储器内的表示,称为数据的存储结构。
线性结构:如果结构非空,则有且仅有一个开始结点和一个终端结点,并且所有的结点都最多只有一个直接前驱和一个直接后继
非线性结构:该结构的逻辑特征是一个结点可能有多个直接前驱和直接后继
3.3简述顺序存储结构与链式存储结构在表示数据元素之间关系上的主要区别
答:顺序存储结构是将各数据元素的存储位置按其之间的逻辑关系存放在一块连续的存储空间内,由数据元素的存储位置体现数据元素之间的逻辑关系。链式存储结构各数据元素不一定是存储在连续的一块存储空间内,数据元素之间的逻辑关系与存储位置没有一一对应的关系,数据元素之间的逻辑关系,是依靠附加在存储数据元素的结点中的指针表示。
3.4通常从哪几个方面评价算法的质量
答:
a.算法必须是正确的
b.执行算法所耗费的时间
c.执行算法所耗费的空间,其中主要考虑辅助存储空间
d.算法应易于理解、易于编码、易于调试等
4. 应用题
4.1求下述算法的时间复杂度
for(i=1;i<=n;i++)
{
y=y+1;
for(j=1;j<=2*n;j++)
x=x+1;
}
答:其中语句y=y+1的频度是n-1,语句x=x+1的频度是(n-1)(2n+1)。所以该程序的算法时间复杂度是:T(n)=O((n-1)(2n+1))=O(n2)
4.2求下述算法的时间复杂度
x=1;
sum=0;
for(i=1;i<=n;i++)
{
x=x*i;
sum=sum+x;
}
答:由于嵌套最深的语句的频度为n,所以其算法的时间复杂度为O(n)。
篇2:数据结构实验报告
一、实验目的及要求
1)掌握栈和队列这两种特殊的线性表,熟悉它们的特性,在实际问题背景下灵活运用它们。
本实验训练的要点是“栈”和“队列”的观点;
二、实验内容
1) 利用栈,实现数制转换。
2) 利用栈,实现任一个表达式中的语法检查(选做)。
3) 编程实现队列在两种存储结构中的基本操作(队列的初始化、判队列空、入队列、出队列);
三、实验流程、操作步骤或核心代码、算法片段
顺序栈:
Status InitStack(SqStack &S)
{
S.base=(ElemType*)malloc(STACK_INIT_SIZE*sizeof(ElemType));
if(!S.base)
return ERROR;
S.top=S.base;
S.stacksize=STACK_INIT_SIZE;
return OK;
}
Status DestoryStack(SqStack &S)
{
free(S.base);
return OK;
}
Status ClearStack(SqStack &S)
{
S.top=S.base;
return OK;
}
Status StackEmpty(SqStack S)
{
if(S.base==S.top)
return OK;
return ERROR;
}
int StackLength(SqStack S)
{
return S.top-S.base;
}
Status GetTop(SqStack S,ElemType &e)
{
if(S.top-S.base>=S.stacksize)
{
S.base=(ElemType *)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(ElemType));
if(!S.base) return ERROR;
S.top=S.base+S.stacksize;
S.stacksize+=STACKINCREMENT;
}
*S.top++=e;
return OK;
}
Status Push(SqStack &S,ElemType e)
{
if(S.top-S.base>=S.stacksize)
{
S.base=(ElemType *)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(ElemType));
if(!S.base)
return ERROR;
S.top=S.base+S.stacksize;
S.stacksize+=STACKINCREMENT;
}
*S.top++=e;
return OK;
}
Status Pop(SqStack &S,ElemType &e)
{
if(S.top==S.base)
return ERROR;
e=*--S.top;
return OK;
}
Status StackTraverse(SqStack S)
{
ElemType *p;
p=(ElemType *)malloc(sizeof(ElemType));
if(!p) return ERROR;
p=S.top;
while(p!=S.base)//S.top上面一个...
{
p--;
printf(“%d ”,*p);
}
return OK;
}
Status Compare(SqStack &S)
{
int flag,TURE=OK,FALSE=ERROR;
ElemType e,x;
InitStack(S);
flag=OK;
printf(“请输入要进栈或出栈的元素:”);
while((x= getchar)!='#'&&flag)
{
switch (x)
{
case '(':
case '[':
case '{':
if(Push(S,x)==OK)
printf(“括号匹配成功!\n\n”);
break;
case ')':
if(Pop(S,e)==ERROR || e!='(')
{
printf(“没有满足条件\n”);
flag=FALSE;
}
break;
case ']':
if ( Pop(S,e)==ERROR || e!='[')
flag=FALSE;
break;
case '}':
if ( Pop(S,e)==ERROR || e!='{')
flag=FALSE;
break;
}
}
if (flag && x=='#' && StackEmpty(S))
return OK;
else
return ERROR;
}
链队列:
Status InitQueue(LinkQueue &Q)
{
Q.front =Q.rear=
(QueuePtr)malloc(sizeof(QNode));
if (!Q.front) return ERROR;
Q.front->next = NULL;
return OK;
}
Status DestoryQueue(LinkQueue &Q)
{
while(Q.front)
{
Q.rear=Q.front->next;
free(Q.front);
Q.front=Q.rear;
}
return OK;
}
Status QueueEmpty(LinkQueue &Q)
{
if(Q.front->next==NULL)
return OK;
return ERROR;
}
Status QueueLength(LinkQueue Q)
{
int i=0;
QueuePtr p,q;
p=Q.front;
while(p->next)
{
i++;
p=Q.front;
q=p->next;
p=q;
}
return i;
}
Status GetHead(LinkQueue Q,ElemType &e)
{
QueuePtr p;
p=Q.front->next;
if(!p)
return ERROR;
e=p->data;
return e;
}
Status ClearQueue(LinkQueue &Q)
{
QueuePtr p;
while(Q.front->next )
{
p=Q.front->next;
free(Q.front);
Q.front=p;
}
Q.front->next=NULL;
Q.rear->next=NULL;
return OK;
}
Status EnQueue(LinkQueue &Q,ElemType e)
{
QueuePtr p;
p=(QueuePtr)malloc(sizeof (QNode));
if(!p)
return ERROR;
p->data=e;
p->next=NULL;
Q.rear->next = p;
Q.rear=p; //p->next 为空
return OK;
}
Status DeQueue(LinkQueue &Q,ElemType &e)
{
QueuePtr p;
if (Q.front == Q.rear)
return ERROR;
p = Q.front->next;
e = p->data;
Q.front->next = p->next;
if (Q.rear == p)
Q.rear = Q.front; //只有一个元素时(不存在指向尾指针)
free (p);
return OK;
}
Status QueueTraverse(LinkQueue Q)
{
QueuePtr p,q;
if( QueueEmpty(Q)==OK)
{
printf(“这是一个空队列!\n”);
return ERROR;
}
p=Q.front->next;
while(p)
{
q=p;
printf(“%d<-\n”,q->data);
q=p->next;
p=q;
}
return OK;
}
循环队列:
Status InitQueue(SqQueue &Q)
{
Q.base=(QElemType*)malloc(MAXQSIZE*sizeof(QElemType));
if(!Q.base)
exit(OWERFLOW);
Q.front=Q.rear=0;
return OK;
}
Status EnQueue(SqQueue &Q,QElemType e)
{
if((Q.rear+1)%MAXQSIZE==Q.front)
return ERROR;
Q.base[Q.rear]=e;
Q.rear=(Q.rear+1)%MAXQSIZE;
return OK;
}
Status DeQueue(SqQueue &Q,QElemType &e)
{
if(Q.front==Q.rear)
return ERROR;
e=Q.base[Q.front];
Q.front=(Q.front+1)%MAXQSIZE;
return OK;
}
int QueueLength(SqQueue Q)
{
return(Q.rear-Q.front+MAXQSIZE)%MAXQSIZE;
}
Status DestoryQueue(SqQueue &Q)
{
free(Q.base);
return OK;
}
Status QueueEmpty(SqQueue Q) //判空
{
if(Q.front ==Q.rear)
return OK;
return ERROR;
}
Status QueueTraverse(SqQueue Q)
{
if(Q.front==Q.rear)
printf(“这是一个空队列!”);
while(Q.front%MAXQSIZE!=Q.rear)
{
printf(“%d<- ”,Q.base[Q.front]);
Q.front++;
}
return OK;
}
篇3:数据结构实验报告
一.实验内容:
实现哈夫曼编码的生成算法。
二.实验目的:
1、使学生熟练掌握哈夫曼树的生成算法。
2、熟练掌握哈夫曼编码的方法。
三.问题描述:
已知n个字符在原文中出现的频率,求它们的哈夫曼编码。
1、读入n个字符,以及字符的权值,试建立一棵Huffman树。
2、根据生成的Huffman树,求每个字符的Huffman编码。并对给定的待编码字符序列进行编码,并输出。
四.问题的实现
(1)郝夫曼树的存储表示
typedef struct{
unsigned int weight;
unsigned int parent,lchild,rchild;
}HTNode,*HuffmanTree; //动态分配数组存储郝夫曼树
郝夫曼编码的存储表示
typedef char* *HuffmanCode;//动态分配数组存储郝夫曼编码
(2)主要的实现思路:
a.首先定义郝夫曼树的存储形式,这里使用了数组
b.用select遍历n个字符,找出权值最小的两个
c.构造郝夫曼树HT,并求出n个字符的郝夫曼编码HC
总结
1.基本上没有什么太大的问题,在调用select这个函数时,想把权值最小的两个结点的序号带回HuffmanCoding,所以把那2个序号设置成了引用。
2.在编程过程中,在什么时候分配内存,什么时候初始化花的时间比较长
3.最后基本上实现后,发现结果仍然存在问题,经过分步调试,发现了特别低级的输入错误。把HT[i].weight=HT[s1].weight+HT[s2].weight;中的s2写成了i
附:
//动态分配数组存储郝夫曼树
typedef struct{
int weight; //字符的权值
int parent,lchild,rchild;
}HTNode,*HuffmanTree;
//动态分配数组存储郝夫曼编码
typedef char* *HuffmanCode;
//选择n个(这里是k=n)节点中权值最小的两个结点
void Select(HuffmanTree &HT,int k,int &s1,int &s2)
{ int i;
i=1;
while(i<=k && HT[i].parent!=0)i++;
//下面选出权值最小的结点,用s1指向其序号
s1=i;
for(i=1;i<=k;i++)
{
if(HT[i].parent==0&&HT[i].weight
}
//下面选出权值次小的结点,用s2指向其序号
for(i=1;i<=k;i++)
{
if(HT[i].parent==0&&i!=s1)break;
}
s2=i;
for(i=1;i<=k;i++)
{
if(HT[i].parent==0&&i!=s1&&HT[i].weight
}
}
//构造Huffman树,求出n个字符的编码
void HuffmanCoding(HuffmanTree &HT,HuffmanCode &HC,int *w,int n)
{
int m,c,f,s1,s2,i,start;
char *cd;
if(n<=1)return;
m=2*n-1; //n个叶子n-1个结点
HT=(HuffmanTree)malloc((m+1)*sizeof(HTNode)); //0号单元未用,预分配m+1个单元
HuffmanTree p=HT+1;
w++; //w的号单元也没有值,所以从号单元开始
for(i=1;i<=n;i++,p++,w++)
{
p->weight=*w;
p->parent=p->rchild=p->lchild=0;
}
for(;i<=m;++i,++p)
{
p->weight=p->parent=p->rchild=p->lchild=0;
}
for(i=n+1;i<=m;i++)
{
Select(HT,i-1,s1,s2); //选出当前权值最小的
HT[s1].parent=i;
HT[s2].parent=i;
HT[i].lchild=s1;
HT[i].rchild=s2;
HT[i].weight=HT[s1].weight+HT[s2].weight;
}
//从叶子到根逆向求每个字符的郝夫曼编码
HC=(HuffmanCode)malloc((n+1)*sizeof(char*)); //分配n个字符编码的头指针变量
cd=(char*)malloc(n*sizeof(char)); //分配求编码的工作空间
cd[n-1]='\0';//编码结束符
for(i=1;i<=n;i++) //逐个字符求郝夫曼编码
{
start=n-1; //编码结束符位置
for(c=i,f=HT[i].parent;f!=0;c=f,f=HT[f].parent) //从叶子到根逆向求编码
{
if(HT[f].lchild==c)cd[--start]='0';
else
cd[--start]='1';
}
HC[i]=(char*)malloc((n-start)*sizeof(char)); //为第i个字符编码分配空间
strcpy(HC[i],&cd[start]);//从cd复制编码到HC
}
free(cd); //释放工作空间
}
void main
{ int n,i;
int* w; //记录权值
char* ch; //记录字符
HuffmanTree HT;
HuffmanCode HC;
cout<<“请输入待编码的字符个数n=”;
cin>>n;
w=(int*)malloc((n+1)*sizeof(int)); //记录权值,号单元未用
ch=(char*)malloc((n+1)*sizeof(char));//记录字符,号单元未用
cout<<“依次输入待编码的字符data及其权值weight”<
for(i=1;i<=n;i++)
{
cout<<“data[”<
}
篇4:数据结构试题答案
数据结构试题答案
一、单项选择题(每题2分,共30分)
1.若某线性表中最常用的操作是取第i个元素和找第i个元素的前趋元素,则采用( )存储方式最节省时间。
A) 单链表 B) 双链表 C) 单向循环链表 D) 顺序表
2.串是任意有限个( )。
A) 符号构成的序列 B) 符号构成的集合
C) 字符构成的序列 D) 字符构成的集合
3.设矩阵A的任一元素aij(1≤i,j≤10)满足:
aij≠0;(i≥j,1≤i,j≤10)
aij=0; (i 现将A的所有非0元素以行序为主序存放在首地址为的存储区域中,每个元素占有4个单元,则元素A[9,5]的首地址为( )。 A) 2340 B) 2336 C) 2164 D) 2160 4.如果以链表作为栈的存储结果,则出栈操作时( )。 A) 必须判别栈是否为满 B) 对栈不作任何判别 C) 必须判别栈是否为空 D) 判别栈元素的类型 5.设数组Data[0..m]作为循环队列SQ的存储空间,front为队头指针,rear为队尾指针,则执行出队操作的语句为( )。 A) front = front+1 B) front = (front+1) % m C) rear = (rear+1) % m D) front = (front+1) % (m+1) 6.深度为6(根的层次为1)的二叉树至多有( )结点。 A) 64 B) 32 C) 31 D) 63 7.将含100个结点的完全二叉树从根这一层开始,每层上从左到右依次堆结点编号,根结点的编号为1。编号为49的结点X的双亲的编号为( )。 A) 24 B) 25 C) 23 D) 无法确定 8.设有一个无向图 和 ,如果 为 的生成树,则下面不正确的说法是( )。 A) 为 的子图 B) 为 的连通分量 C) 为 的极小连通子图且 D) 为 的一个无环子图 9.用线性探测法查找闭散列表,可能要探测多个散列地址,这些位置上的键值( )。 A) 一定都是同义词 B) 一定都不是同义词 C) 多相同 D) 不一定都是同义词 10.二分查找要求被查找的表是( )。 A) 键值有序的链接表 B) 链接表但键值不一定有序 C) 键值有序的顺序表 D) 顺序表但键值不一定有序 11.当初始序列已经按键值有序,用直接插入算法对其进行排序,需要循环的次数为( )。 A) B) C) D) n-1 12.堆是一个键值序列 ,对 ,满足( )。 A) B) C) 且 ( ) D) 或 ( ) 13.使用双向链表存储数据,其优点是可以( )。 A) 提高检索速度 B) 很方便地插入和删除数据 C) 节约存储空间 D) 很快回收存储空间 14.设计一个判别表达式中左右括号是否配对出现地算法,采用( )数据结构最佳。 A) 线性表地顺序存储结构 B) 栈 C) 队列 D) 线性表达的链式存储结构 15.设深度为k的二叉树上只有度为0和2的结点,则此类二叉树中所含的结点数至少为( )。 A) k + 1 B) 2k C) 2k - 1 D) 2k + 1 二、填空题(每空2分,共28分) 1.设r指向单链表的最后一个结点,要在最后一个结点之后插入s所指的结点,需执行的三条语句是_____________________________________________r=s;r->next=NULL。 2.在单链表中,指针p所指结点为最后一个结点的条件是___________________。 3.设一个链栈的栈顶指针是ls,栈中结点格式为 ,栈空的条件为_____________。如果栈不为空,则出栈操作为p=ls;______________;free(p)。 4.已知一棵度为3的树有2个度为1的结点,3个度为2的结点,4个度为3的'结点,则该树有________个叶子结点。 5.树有三种常用的存储结构,即孩子链表法,孩子兄弟链表法和____________。 6.n个顶点的连通图的生成树有__________条边。 7.一个有向图G中若有弧 、和 ,则在图G的拓扑序列中,顶点 的相对位置为___________。 8.设表中元素的初始状态是按键值递增的,分别用堆排序、快速排序、冒泡排序和归并排序方法对其进行排序(按递增顺序),________最省时间,__________最费时间。 9.下面是将键值为x的结点插入到二叉排序树中的算法,请在划线处填上适当的内容。 Typedef struct pnode { int key; struct node * left, * right; } Void search (int x; pnode t ) { if (_____________) {p = malloc (size); p->key=x;p->left=NULL; p->right=NULL; t=p; } else if (xkey) search (x,t->left) else _________________ } 10.线性表的____________的主要优点是从表中任意结点出发都能访问到所有结点。而使用____________,可根据需要在前后两个方向上方便地进行查找。 三、应用题(每题10分,共30分) 1.在双链表中,要在指针变量P所指结点之后插入一个新结点,请按顺序写出必要的算法步骤。(设:P所指结点不是链表的首尾结点,q是与p同类型的指针变量) 2.已知待排序文件各记录的排序码顺序如下: 72 73 71 23 94 16 05 68 请列出快速排序过程中每一趟的排序结果。 四、算法题(共12分) 编写算法,实现单链表上的逆置运算(说明:即将单链表中的元素次序反转) 参考答案: 一、单项选择题(每题2分,共30分) 1.D 2.C 3.D 4.C 5.D 6.D 7.A 8.B 9.D 10.C 11.D 12.C 13.A 14.B 15.C 二、填空题(每空2分,共28分) 1. r->next=s; 2. p->next=NULL; 3. ls = = NULL; ls=ls->link。 4. 12 5. 双亲表示法 6. n-1 7. i,j,k 8. 冒泡排序,快速排序 9. t= =NULL,search(x,t->right); 10.循环链表,双向链表 三、应用题(每题10分,共30分) 1.new(q); q↑.llink ← p; q↑.rlink ← p↑.rlink; p↑.rlink↑.llink ← q; p↑.rlink ← q。 评分细则:按顺序每对一个给2分,全对计10分。 2.各趟结果如下: [68 05 71 23 16] 72 [94 73] [16 05 23] 68 [71] 72 [94 73] [05] 16 [23] 68 [71] 72 [94 73] 05 16 [23] 68 [71] 72 [94 73] 05 16 23 68 71 72 [94 73] 05 16 23 68 71 72 [73] 94 05 16 23 68 71 72 73 94 四.算法题(共12分) void invert( pointer head) {p=NULL; while ( headNULL) {u=head; head=head->next; u->next=p; p=u; } head=p; } 目前所在: 天河区 年 龄: 20 户口所在: 汕头 国 籍: 中国 婚姻状况: 未婚 民 族: 汉族 诚信徽章: 未申请 身 高: 157 cm 人才测评: 未测评 体 重: 人才类型: 在校学生 应聘职位: 幼教/保育员, 家教, 销售主管/销售代表/客户代表 工作年限: 1 职 称: 求职类型: 兼职 可到职日期: 随时 月薪要求: 面议 希望工作地区: 天河区,越秀区,广州 工作经历 无 起止年月:2011-10 ~ 2012-05 公司性质: 所属行业: 担任职位: 作业指导 工作描述: 辅导小学生作业,照顾小学生 广州地铁 起止年月:2012-04 ~ 2012-05 担任职位: 地铁志愿者 工作描述: 毕业院校: 广东交通职业技术学院 最高学历: 大专 获得学位: 毕业日期: 2014-06 专 业 一: 软件技术 专 业 二: 起始年月 终止年月 学校(机构) 所学专业 获得证书 证书编号 语言能力 外语: 英语 良好 粤语水平: 一般 其它外语能力: 国语水平: 优秀 工作能力及其他专长 熟悉计算机办公软件操作、C语言,数据结构,数据库原理,汇编语言,软件工程等Windows编程、网页制作 个人自传 性格开朗,成绩优良,乐于助人;善于与人交流、适应能力强、具有团体协作精神;喜欢运动 【数据结构习题(精选5篇)】相关文章: 四级翻译练习题《中国结》2023-08-25 大学物理习题2023-01-29 岩土工程师《基础知识》练习题答案2023-03-28 《云计算》阅读练习题附答案2022-10-14 高三一轮物理复习反思2022-05-07 初三数学复习课的学习技巧2023-10-20 九年级数学的复习计划有哪些呢2022-08-19 数学中考复习教学反思2023-02-06 大学英语四级翻译练习题2022-12-31 华东师大九年级数学期末复习计划有哪些2023-12-06篇5:数据结构简历