1.有pqueue.h如下
#ifndef HEADER_PQUEUE_H
#define HEADER_PQUEUE_H
typedef struct_pqueue{
pitem *items;
int count;
}pqueue_s;
typedef struct_pqueue *pqueue;
typedef struct_pitem{
unsigned char priority[8];
void *data;
struct_pitem *next;
}pitem;
typedef struct_pitem *piterator;
pitem *pitem_new(unsigned char *prio64be,void *data);
void pitem_free(pitem *item);
pqueue pqueue_new(void);
void pqueue_free(pqueue pq);
pitem *pqueue_insert(pqueue pq,pitem *item);
pitem *pqueue_peek(pqueue pq);
pitem *pqueue_pop(pqueue pq);
pitem *pqueue_find(pqueue pq,unsigned char *prio64be);
pitem *pqueue_iterator(pqueue pq);
pitem *pqueue_next(piterator *iter);
int pqueue_size(pqueue pq);
#endif /*! HEADER_PQUEUE_H */
pq_test.c如下:
#include<stdlib.h>
#include<string.h>
#include""pqueue.h""
/*remember to change expected.txt if you change there values*/
unsigned char prio1[8]=""supercal"";
unsigned char prio2[8]=""ifragili"";
unsigned char prio3[8]=""sticexpi"";
static void
pqueue_print(pqueue pq)
{
pitem *iter,*item;
iter=pqueue_iterator(pq);
for(item=pqueue_next(&iter);item!=NULL;
item=pqueue_next(&iter)){
printf(""item\t%02x%02x%02x%02x%02x%02x%02x%02x\n"",
item ->priority[0],item->priority[1],
item ->priority[2],item->priority[3],
item ->priority[4],item->priority[5],
item ->priority[6],item->priority[7],
}
}
int main(void)
{
pitem *item;
pqueue pq;
pq=pqueue_new();
item=pitem_new(prio3,NULL);
pqueue_insert(pq,item);
item=pitem_new(prio1,NULL);
pqueue_insert(pq,item);
item=pitem_new(prio2,NULL);
pqueue_insert(pq,item);
item=pqueue_find(pq,prio1);
fprintf(stderr,""found %p\n"",item->priority);
item=pqueue_find(pq,prio2);
fprintf(stderr,""found %p\n"",item->priority);
item=pqueue_find(pq,prio3);
fprintf(stderr,""found %p\n"",item->priority);
pqueue_print(pq);
for(item=pqueue_pop(pq);item!=NULL;item=pqueue_pop(pq))
pitem_free(item);
pqueue_free(pq);
return 0;
}
pq_test.sh如下:
#!/bin/sh
set -e
./pq_test | cmp $srcdir/pq_expected.txt-
pq_expected.txt如下:
item 6966726167696c69
item 7374696365787069
item 737570657263616c
1).根据测试代码描述pqueue的工作原理。
2).请实现 pitem *pqueue_insert(pqueue pq,pitem *item);
2.http状态码中,()表示访问成功,()表示坏请求,()表示服务不可用
3.使用C/C++语言写一个函数,实现字符串的反转,要求不能用任何系统函数,且时间复杂度最小。
函数原型是:char *reverse_str(char *str)
4.请找出下面用于拷贝内存的代码中的逻辑错误,并修正。
void memcpy(const char* src,char* dest){
int len=strlen(src);
dest=(char*)malloc(len);
char* d=dest;
char* s=src;
while(len--!=0){
*d=*s;
d++;
s++;
}
}
5.在SQL中,一个表的定义如下:
CREATE TABLE t_account(
account varchar(100),
account_type TINYTEXT,
PRIMARY KEY (account),
};
account为账号,account_type为该账号的类型,写出一个sql,统计账号数累计超过5000个账号类型,并显示对应的账号数,即结果中每行是(账号类型,账号数)
参考答案:https://download.csdn.net/download/weixin_39813541/11160285