昨天在人人的笔试题总结
在支持多线程的系统中,进程P创建的若干个线程,不能共享的是
A、进程P的代码段 B、进程P中打开的文件 C、进程P的全局变量 D、进程P中某线程的栈指针答案D
数据库事务正确执行的四个基本要素
原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)
编程题:链表翻转
链表反转
1.链表有两种,一是带头结点的:头结点存储长度信息,头结点的next指向第一个实际节点;二是不带头结点的,头结点即第一个节点。这里使用带头结点的链表。
2.需要三个指针,记录当前节点(反转用)、前一个节点、后一个节点(反转之后前进用)。
测试的时候,在创建链表的时候,注意实际的new这个节点。
还要注意链表为空的情况。
/* 链表 1.带头结点的:head里面存放链表长度(或其他信息),head->next指向第一个实际节点; 2.不带头结点的:head即第一个实际节点 */ typedef struct Node { int data; Node * next; }; void reverseList(Node *head) { if ((head==NULL)||((head->next)==NULL)) return ; //如果head为空,或者头结点指向空节点(链表长度为0),则退出。 Node *pre,*cur,*next; //cur 记录当前位置,pre记录上一个位置,为cur->next的值;next记录下一个位置,反转后cur不等于cur->next cur=head->next; pre=NULL; //逆转之后,头结点变为尾节点,其next为Null while (cur!=NULL) { next=cur->next; //反转后不能再用cur->next,所以先记录下这个节点 cur->next=pre; pre=cur; cur=next; } head->next=pre; //cur已经为空,所以pre为尾节点。head->next指向它。 return ; }
彩讯公司笔试题: