2003年程序员下午试题及答案
- 格式:doc
- 大小:26.50 KB
- 文档页数:6
2003年程序员下午试题及答案
①int push(PNODE *top,int e)是进栈函数,形参top是栈顶指针的指针,形参e是入栈元素。
②int pop(PNODE *top,int oe)是出栈函数,形参top是栈顶指针的指针,形参e作为返回出栈元素使用。
③int enQueue(PNODE *tail,int e)是入队函数,形参tail是队尾指针的指针,形参e是入队元素。
④int deQueue(PNODE *tail,int *e)是出队函数,形参tail是队尾指针的指针,形参e作为返回出队元素使用。
以上四个函数中,返回值为0表示操作成功,返回值为-1表示操作失败。
栈是用链表实现的;队是用带有辅助结点(头结点)的单向循环链表实现的。
两种链表的结点类型均为:
typedef struct node{
int value;
struct node *next;
}NODE,*PNODE;
[函数①]
int push(PNODE *top,int e)
{
PNODE p = (PNODE)malloc(sizeof(NODE)); if(!p) return –1;
p- value = e;
___(1)___;
*top = p;
return 0;
}
[函数②]
int pop(PNODE *top,int *e)
{
PNODE p = *top;
if(p == NULL) return –1;
*e = p- value;
___(2)____;
free(p);
return 0;
}
[函数③]
int enQueue(PNODE *tail,int e) { PNODE p,t;
t = *tail;
p = (PNODE)malloc(sizeof(NODE));if(!p) return –l;
p—value = e;
p—next = t—next;
____(3)____;
*tail = p;
return 0;
}
[函数④]
int deQueue(PNODE *tail,int *e) { PNODE p,q;
if((*tail)- next == *tail)return –1; p = (*tail)- next;
q = p- next;
*e = q- value;
___(4)___ = q- next;
if(*tail = q) ___(5)___;
free(q);
return 0;
)
参考答案
试题一
(1) H
(2) L
(3) ENG(L) 或ENG(I+1)
(4) CN(L) 或CN(I+1)
(5) ②
试题二
(1) strlen(s) + s
(2) *p == ch
(3) ptr = ptr - left
(4) ptr = ptr- right
(5) ptr
试题三
(1) u = v,v = v- next 或u = v,v = u- next
(2) v == base 或base- no == n
(3) v- no p- no 或v- no = p- no
(4) base = v
(5) v- next = p
试题四
(1) k != 0 或k
(2) (j-k+n) % n
(3) j
(4) a[t] 或*(a+t)
(5) i++
试题五
(1) p- next = *top
(2) *top = p- next 或*top = (*top)- next
(3) t- next = p 或(*tail)- next = p
(4) p- next 或(*tail)- next- next
(5) *tail = p 或*tail = (*tail)- next 2003年程序员下午试题及答案相关内容:。