/* 將長度爲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);
}