笔试题总结

昨天在人人的笔试题总结

 

在支持多线程的系统中,进程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 ;  
    }  

 彩讯公司笔试题:

 

posted @ 2014-10-22 08:58  mjhuang  阅读(157)  评论(0编辑  收藏  举报