South Sudan's army said it had seized back full control of the strategic town of Malakal, the last major settlement under rebel control, after a week of bitter street fighting.