the code of DoubleList