1: 单链表删除节点
typedef struct Node
{
int data;
struct Node *next;
}Node;
int DeleteNode(Node*p, Node*head)
{
Node *pre=head;
Node *q=head;
while( q&& q->data!=p->data )
{
pre=q;
q=q->next;
}
if (!q) return -1;
//未找到待删除的节点
//at this time, q=p;
if (p==head) head=head->next;
else
{
pre->next=q->next;
}
free(p);
return 0;
}
2:有三块草地,分别是5,6,8公顷,草皮厚度一样,
生长速度一样,第一快草地11头牛吃了10天吃完,
第二快草地12头牛吃了14天吃完,问第三块草地19头牛能吃几天。
解
y: 一头牛一天吃多少公顷草
x: 草地每天增长了多少公顷
5+10(x)=110y
6+14(x)=14*12y
发现解出来y是负数, 肯定不对。
Re: 第8题(仅供参考)
设5公顷原有草T,每天长S,一头牛一天吃W,19头牛可以吃x天,则
10*11*W=T+10*S.....(1)
12*14*W=6/5*T+6/5*14*S.....(2)
19*x*W=8/5*T+8/5*x*S.....(3)
由(1)和(2)可得S=7.5W T=35W
代人(3)可得
x=8天
3:一个单链表,尾指针指向前面的某个节点,如何有效率的找出尾指针的位置?
node * GetTail(node *head,node *&tail)
{
node *fast,*slow;
fast=slow=head;
while(1)
{
if ( fast ==slow)
{
tail =fast;
return tail;
}
else
{
slow =slow->next;
fast=fast->next->next;
}
}
}
4: 关于内存对齐的问题以及sizeof()的输出
答:编译器自动对齐的原因:为了提高程序的性能,
数据结构(尤其是栈)应该尽可能地在自然边界上对齐。原因在于,
为了访问未对齐的内存,处理器需要作两次内存访问;然而,
对齐的内存访问仅需要一次访问。
5一般数据库若出现日志满了,会出现什么情况,是否还能使用?
答:只能执行查询等读操作,不能执行更改,备份等写操作,
原因是任何写操作都要记录日志。也就是说基本上处于不能使用的状态。
amortize
v.
分期清偿
阅读(2603) | 评论(2) | 转发(0) |