深信服2015年校招笔试(武汉)2014年10月12日

匿名网友 匿名网友 发布于: 2015-10-13 00:00:00
阅读 256 收藏 0 点赞 0 评论 0

1 给定一个字符串,只包含字母和空格,统计单词个数。给定函数原型:int stat_word(const char *str)

int stat_word(const char *str)
{
    if(str == NULL) {
        return 0;
    }

    int cnt = 0;
    bool flag = false;
    const char *s = str;

    while(*s != '\0') {
        if(*s == ' ') {
            if(flag) {
                ++cnt;
                flag = false;
            }
        }
        else {
            if(!flag) {
                flag = true;
            }
        }

        ++s;
    }

    if(flag) {
        return cnt + 1;
    }

    return cnt;
}

2 不能使用除malloc/free之外的系统函数,写两个函数create_list和remove_sequence,其中,create_list用数组创建链表,remove_sequence删除链表中的一个序列。以下是节点定义和函数原型:

struct list {
    int val;
    struct list *next;
}

list* create_list(const int*, int size);

bool remove_sequence(list **, const int*, int size);
list* create_list(const int *arr, int size)
{
    list *root = NULL;
    list *tail = NULL;

    for(int i = 0; i < size; ++i) {
        if(root) {
            list *pnode = (list*)malloc(sizeof(list));
            pnode->next = NULL;
            pnode->val = arr[i];
            tail->next = pnode;
            tail = tail->next;
        }
        else {
            list *pnode = (list*)malloc(sizeof(list));
            pnode->next = NULL;
            pnode->val = arr[i];
            root = pnode;
            tail = pnode;
        }
    }

    return root;
}

评论列表
文章目录