您的位置:首页 > 其它

2013届华为校园招聘机试题

2014-11-08 22:00 330 查看
笔试题目(机试,共两题) 

题目一:子串分离 

题目描述:   

通过键盘输入任意一个字符串序列,字符串可能包含多个子串,子串以空格分隔。请编写一个程序,自动分离出各个子串,并使用’,’将其分隔,并且在最后也补充一个’,’并将子串存储。 

如果输入“abc def gh i        d”,结果将是abc,def,gh,i,d, 

 

要求实现函数:   

void DivideString(const char *pInputStr, long lInputLen, char *pOutputStr); 

 

【输入】  pInputStr:  输入字符串 

          lInputLen:  输入字符串长度                   

【输出】  pOutputStr:  输出字符串,空间已经开辟好,与输入字符串等长; 

【注意】只需要完成该函数功能算法,中间不需要有任何IO 的输入输出 

示例   

输入:“abc def gh i        d”

输出:“abc,def,gh,i,d,”

转载请标明出处,原文地址:http://blog.csdn.net/hackbuteer1/article/details/11150519

[cpp] view
plaincopy

void DivideString(const char* pInputStr , long lInputLen , char* pOutputStr)  

{  

    int i , j;  

    bool flag;  

    for(i = 0 ; pInputStr[i] == ' ' ; ++i)   //跳过字符串前面的空格  

        ;  

    flag = true;  

    for(j = 0 ; i < lInputLen ; ++i)  

    {  

        if(pInputStr[i] != ' ')  

        {  

            if(!flag)  

                flag = true;  

            pOutputStr[j++] = pInputStr[i];    //将各个子串分离保存下来  

        }  

        else  

        {  

            if(flag)  

                pOutputStr[j++] = ',';  

            flag = false;  

        }  

    }  

    pOutputStr[j++] = ',';  

    pOutputStr[j++] = '\0';  

}  

 
题目二:逆序链表输出。 

题目描述:   

将输入的一个单向链表,逆序后输出链表中的值。链表定义如下: 

typedef struct tagListNode 



      int value; 

      struct tagListNode *next; 

}ListNode; 

 

要求实现函数:   

void converse(ListNode **head); 

【输入】head:    链表头节点,空间已经开辟好 

【输出】head:    逆序后的链表头节点

【返回】无 

【注意】只需要完成该函数功能算法,中间不需要有任何IO 的输入输出 

[cpp] view
plaincopy

// 返回新链表头节点  

LinkNode *reverse_link(LinkNode *head)  

{  

    if(head == NULL)  

        return NULL;  

    LinkNode *prev , *curr , *reverse_head , *temp;  

    prev = NULL , curr = head;  

    while(curr->next)  

    {  

        temp = curr->next;  

        curr->next = prev;  

        prev = curr;  

        curr = temp;  

    }  

    curr->next = prev;  

    reverse_head = curr;  

    return reverse_head;  

}  

转载请标明出处,原文地址:http://blog.csdn.net/hackbuteer1/article/details/11150519

void converse(ListNode *head)
{
ListNode *pre = NULL;
ListNode *p = head->next;
ListNode *q = NULL;

while(p != NULL)
{
q = p->next;
p->next = pre;
pre = p;
p = q;
}
head->next = pre;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: