中兴笔试精华汇总
default:{printf("Error!\n"); goto aga;}
}
}
二、线性链表的存储实现
struct LNODE{
ElemType data;
struct LNODE *next;
};
typedef struct LNODE LNode;
typedef struct LNODE * LinkList;
1初始化操作
Status Init_L(LinkList L){
if (L=(LinkList *)malloc(sizeof(LNode)))
{L->next=NULL;return 1;}
else return 0;
}
2插入操作
Status ListInsert_L(LinkList &L,int i,ElemType e){
p=L,j=0;
while(p&&jnext;++j;}
if(!p||j>i-1) return ERROR;
s=(LinkList)malloc(sizeof(LNode));
s->data=e;s->next=p->next;
p->next=s;
return OK;
}//ListInsert_L
3删除操作
Status ListDelete_L(LinkList &L,int i,ElemType &e){
p=L,j=0;
while(p&&jnext;++j;}
if(!p->next||j>i-1) return ERROR;
q=p->next;p->next=q->next;
e=q->data;free(q);
return OK;
}//ListDelete_L
4取某序号元素的操作
Status GetElem_L(LinkList &L,int i,ElemType &e){
p=L->next,j=1;
while(p&&jnext;++j;}
if(!p||j>i) return ERROR;
www.qz26.com
e=p->data;
return OK;
}//GetElem_L
5归并两个单链表的算法
void MergeList_L(LinkList &La,LinkList &Lb,LinkList &Lc){
//已知单链线性表La和Lb的元素按值非递减排列
//归并后得到新的单链线性表Lc,元素也按值非递减排列
pa=La->next;pb=Lb->next;
Lc=pc=La;
while(pa&&pb){
if(pa->data<=pb->data){
pc->next=pa;pc=pa;pa=pa->next;
}else{pc->next=pb;pc=pb;pb=pb->next;}
}
pc->next=pa?pa:pb;
free(Lb);
}//MergeList_L
头指针与头结点的区别:
头指针只相当于结点的指针域,头结点即整个线性链表的第一个结点,它的数据域可以放数据元素,也可以放线性表的长度等附加信息,也可以不存储任何信息。
第一部分 数据结构和算法
1. 假设执行语句S的时间为O(1),则执行下列程序短的时间为()
for(i=1;i<=n;i++)
for(j=I;j<=n;j++)
S;
A. O(n) B. O(n2) C. O(n*i) D. O(n+1)
2. 二位数组A[10…20,5…10]采用行序为主序方式存储,每个数据元素占4个存储单元,且A[10][5]的存储地址是1000,则A[18][9]的地址是()
A. 1208 B. 1212 C. 1368 D. 1364
3. 设栈最大长度为3,入栈序列为1,2,3,4,5,6,则不可能得出栈序列是() A. 1,2,3,4,5,6 B. 2,1,3,4,5,6 C. 3,4,2,1,5,6 D. 4,3,2,1,5,6 4. 设有98个已排序列元素,采用二分法查
公共题50分,C++和JAVA二选一50分。
公共题:
1、数据库中 XXX 和XXX操作可恢复数据库。undo redo 吧?
2、数据库的核心是XX。
3、头文件中<> 和“”的区别?
4、定义一个宏,输入两个参数,输出积。
3、简述电路交换和分组交换的区别及优缺点。
C++
大约4个选择题,一个6分。数组的操作,在内存中的分配(注意下标从0开始),大题:
www.qz26.com
1、18分的题:
char *GetMemory(void)