contributed by < kevin30292
>
code GitHub
queue.c ๅ ๆไพไป้ขไฝๅฐๆชๆๅฎๆด็จๅผๅฏฆไฝ๏ผ้่ฆ่ฃๅฎไธฆ้ๆญฅ็ฒพ้ฒ๏ผๅ ๅซไปฅไธ๏ผ
q_size
็ฑๆผ่ฆๅจ O(1) ็ๅธธๆธๆ้ๅ
งๅท่กๅฎๆ๏ผๆไปฅไนไธๅฏ่ฝ่ตฐ่จชๆดๅ้็ตไธฒๅ๏ผไปฅๅๅพไฝๅ็ๅฎน็ฉใ
ๆฐๅข size ๅผ็ด้ queue ็ๅคงๅฐ๏ผๅๆ็คบ
Return 0 if q is NULL or empty
new_q
TODO: What if malloc returned NULL?
malloc
ๅๅณ NULL ๅฏ่ฝ็บ่จๆถ้ซไธ่ถณ๏ผๅ ๆญคๅคฑๆใ
ๅ ๅ
ฅๆชขๆฅๆฉๅถ๏ผ
q_free
้้ไธ free
ๆๆqueueไธญ็ๅผๅๅญไธฒ
q_insert_head
็ฌฌ19่ก้่ฆ free(newh)
ๅ ็บ็ฌฌ10่ก็ malloc
ๅคฑๆ๏ผไฝ็ฌฌ6่ก็mallocๆฏๆๆๅ็
q_insert_tail
ไธ่ฝๅพ
head
ๆ ขๆ ขๆพ tail
ๅ ๅ
ฅ tail
ๆง่ณช
queue.h
ๅ ๅ
ฅ๏ผ
้ไฟฎๆน code ไปฅ็ถญ่ญทๆญคๅๆธ
new_q
ๅ ๅ
ฅ๏ผ
q_insert_head
ๅ ๅ
ฅ๏ผ
12-16่ก๏ผ้ฟๅ
head
็ผบๅคฑๆ
ๆณ
ๆธฌ่ฉฆๆ็ผ็พไบ็ขผๅ Segmentation fault
Segmentation fault ้จๅ๏ผๆชขๆฅ็ผ็พ new_q
ๆฒๆ๏ผ
q->size
q
ๆฏๅฆ็บ NULLๆนๅฏซ q_new
ไบ็ขผ้จๅ๏ผๆชขๆฅ็ผ็พ q_insert_head
length ๅผ้ฏ่ชค
ๆน็บ๏ผ
q_reverse
็จๅ
ฉๅ pointer ็ด้๏ผ้็จไธญ็ head
ๅ tail
ๅฝๅ็บ tmph
ๅ tmpt
ๅพ่ head
้ๅงๅ่ฝ๏ผhead->next
ๆๅ head
ไปฅๆญค้กๆจใ
็ถญๆ q->head
ๆๅๅฐๆชๅ่ฝ็ไฝๅ็้ฆ้
ๅ่งฃ๏ผ
tail
็งป่ณ head
head->next
็บ NULLq_sort
ๅกๅจmerge_sort()๏ผไธ็ฅ้ๆ่ฉฒ็จไป้บผๅๆ
็ input ๏ผ่ๆ
ฎๅฐ recursive ๅผๅซใ
ๅ่ๅไบบๅฏฆไฝ๏ผZhuMon๏ผๆก็จ pointer to pointer ็ๆนๅผ๏ผๅณๅฏไธ็จ่ๆ
ฎๅๅณ type ็ๅ้กใ
็ผ็พ sorting ๅจๅ ๅซๅคงๅฏซ็ๆๅๆไธๆญฃๅธธ: