重写结构，使用函数节省空间，大量改进