/* 将长度为slen的字符串s,头插或者尾插入压缩表zl中,where指示是头插还是尾插 */
unsigned char *ziplistPush(unsigned char *zl, unsigned char *s, unsigned int slen, int where) {
unsigned char *p; /* p保存插入位置 */
/* 如果是头插,即where==ZIPLIST_HEAD,p指向压缩表的第一个结点,否则p指向压缩表的最后一个结点 */
p = (where == ZIPLIST_HEAD) ? ZIPLIST_ENTRY_HEAD(zl) : ZIPLIST_ENTRY_END(zl);
/* 调用压缩表将指定长度的字符串插入指定位置的函数 */
return __ziplistInsert(zl, p, s, slen);
}