1.判断一个括号字符串是否匹配正确,如果括号有多种,怎么做?如(([]))正确,[[(()错误。
参考答案:
用栈来出现,凡是左括号就压栈,凡是右括号就出栈,最后如果栈为空就匹配正确
2.用C语言写一个函数来执行一串任务。任务是互相依赖的。比如B任务依赖A任 务,则A完成B
才能执行。不考虑并发限制,假设所有的任务都能一次执行成功,所有的任务执行时间都相等。任务数据结构原型为:typedef struct {
??? //该任务的 ID
??? int id;
??? //该任务依赖的任务的 ID
??? int *child;
??? //该任务依赖的任务个数
??? int child_num;
} task;
// 函数原型:
bool doschedule(task*pask,inttask_num);
//以下函数可以直接调用:
void dotask(int id); //执行一个进程
//等待 timeout 时间,并返回一个执行成功的任务的 id,如果没有任务在时间片内完成,则返回-1
int waittask(int timeout);
bool killtask(int id); //杀掉一个进程。
参考答案
:
1).通过拓扑排序来建立执行顺序.
2).对于无关联的拓扑节点可以并发执行
3.说明以下包含const修饰符的语句的意义
a). double * ptr=&value;
b). const double * ptr=&value;
c). double *constptr =&value;
d).const double *const ptr=&value;
参考答案:
const在前内容不能变,const在指针后则指针不能变
4.阐述栈和堆在生命周期、速度、内存性能等方面的不同点。假如现在有一个缓冲 区域绝大多数只需要1KB空间,极少数极端情况下需要
100MB,怎么样合理分配内存?