what data structure for polinomial

Hello, guys

Anyone had experiences to express polynomial using c language. I want to output the polynomial formula after I solve the question. Not to count the value of a polynomial.

That means I have to output the polynomial formula to screen.

such as:
f := p^100-4275+56*p^57+123*(1-p)^34 ;

362880*p^45-14515200*p^44+282592800*p^43-3567715200*p^42+32833495800*p^41-234748765440*p^40+1357020856800*p^39-6517548349200*p^38+26521978127400*p^37-92792729053500*p^36+282287441908080*p^35-753273866698920*p^34+1775448575926410*p^33-3716558335019880*p^32+6939551178972720*p^31-11596879696617600*p^30+17388982649046960*p^29-23437879996999860*p^28+28429756177413360*p^27-31050312703343640*p^26+30532209914200806*p^25-27011077082801580*p^24+21469710851551800*p^23-15300758477189520*p^22+9748958193896580*p^21-5532426738592740*p^20+2782630494934920*p^19-1232671556293800*p^18+477077447178540*p^17-159642667620135*p^16+45558310696800*p^15-10884316965480*p^14+2121183237600*p^13-324496267200*p^12+36628300800*p^11-2719892160*p^10+100000000*p^9;

This can be done beatifully by Maple.But I do not know how they do this.