なにが酷いか、書いたほうがいいか。

1、main関数内にダラダラ書いてあること。
あの内容に付けるべき関数名はmainじゃない。
mainとは別の関数にして、mainからそれを呼ぶようにすべき。
たった1つの関数を呼ぶだけのmainであっても、それは無駄じゃない。

2、main関数は2つの別の機能を持ってしまっていること。
リスト構造の構築 と リストのダンプ は、別の機能だから、それぞれ関数にすべき
たった2つの関数を呼ぶだけの関数であっても、それは無駄じゃない。

3、list_newで、mallocが失敗した場合に備えてない

4、llist_newは、3つのメンバの初期値を引数で受け取るべき
メモリは確保したら速やかに初期化すべきで、ゆえに、引数で受け取った初期値を代入してから返すほうがいい

5、mallocしたのをfreeしてないぞ

6、引数で引き回すのが面倒という理由でグローバル変数を使うべきじゃない

短いプログラムだからグチャグチャでいい、なんてのは学生さんに教えることじゃない。
いずれ書く大きなプログラムのために勉強してるんだから、短くても、大きなプログラムと同じように書くべき。
短いプログラムでしか通用しないことを勉強するのは無駄だし、いざ大きなプログラムを書くとなったときに困るんじゃ・・・