鱼C论坛

 找回密码
 立即注册
查看: 2313|回复: 1

[已解决]C语言中动态链表的问题

[复制链接]
发表于 2017-5-12 22:24:25 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. #include <stdio.h>
  2. #include <malloc.h>
  3. #include <stdlib.h>
  4. #include <conio.h>

  5. #define MAX 100      //满分成绩
  6. #define MIN 0           //最小成绩
  7. #define LMN sizeof(struct student)
  8. //student结构的大小
  9. struct student *creat();           //创建链表
  10. void print(struct student *head);  //打印链表
  11. struct student *del( struct student *head, int num); //del函数用于删除节点,*head即链表的头指针,num是要删除的结点num。
  12. struct student *insert( struct student *head, struct student *stu_2 );
  13. //第一个参数需要被插入的链表。第二个参数待插入的结点的地址。


  14. struct student
  15. {
  16.       long num;
  17.       char name[20] ;
  18.       float score;
  19.       struct studen *next;
  20. };

  21. int n = 0;                                  //全局变量,用来记录存放了多少节点。
  22. struct student *head = NULL;      
  23. int main ()
  24. {
  25.       struct student * stu, *p, stu_2;
  26.       long num;
  27.       char ch;
  28.       float s;
  29.       s = MAX;
  30.       
  31.       printf("小写字母 z 键是删除数据,小写字母 x 键是插入数据!!\n输入其它键则退出程序!!!\n\n");
  32.       printf("满分成绩为  %.1f 分!!!\n\n\n", s );
  33.       
  34.       
  35.       stu = creat();
  36.       p = stu;
  37.       print(p);
  38.       
  39. #if(1)      
  40.       printf("\n\n\n");
  41.       
  42.       while(1)
  43.       {
  44.             ch = getch();
  45.             if(ch == 'z' )
  46.             {
  47.                   printf("请输入需要删除的学号 : ");
  48.                   scanf("%d", &num);
  49.                   print( del(p, num));
  50.             }
  51.             else if ( ch == 'x' )
  52.             {
  53.                   printf("请输入新添加的学号 : ");
  54.                   scanf("%d", &stu_2.num);
  55.                   printf("请输入新添加的名字 : ");
  56.                   scanf("%s", stu_2.name);
  57.                   printf("请输入新添加的成绩 : ");
  58.                   scanf("%f", &stu_2.score);
  59.                   printf("\n");
  60.                   while(1)
  61.                   {
  62.                         if( stu_2.score > MAX || stu_2.score < 0 )
  63.                         {
  64.                               printf("输入的成绩有误,请重新输入成绩 : ");
  65.                               scanf("%f", &stu_2.score);
  66.                         }
  67.                         else
  68.                         {
  69.                               break;
  70.                         }
  71.                   }
  72.                   
  73.                   p = insert( stu, &stu_2);
  74.                   print(p);
  75.             }
  76.             else
  77.             {
  78.                   break;
  79.             }
  80.             
  81.       }
  82. #endif
  83.       
  84.       return 0;
  85. }

  86. struct student * creat(void)               //创建链表
  87. {
  88.       
  89.       struct student *p1, *p2;
  90.       
  91.       
  92.       p1 = p2 = ( struct student * ) malloc(LMN);
  93.       
  94.       
  95.       printf("请输入学号 : ");
  96.       scanf("%d", &p1->num);
  97.       
  98.       printf("请输入名字 : ");
  99.       scanf("%s", p1->name);
  100.       
  101.       printf("请输入成绩 : ");
  102.       scanf("%f", &p1->score);
  103.       printf("\n");
  104.       while(1)
  105.       {
  106.             if( p1->score > MAX || p1->score < 0  )
  107.             {
  108.                   printf("输入的成绩有误!\n请输入正确的成绩 : ");
  109.                   scanf("%f", &p1->score);
  110.                   printf("\n");
  111.             }
  112.             else
  113.             {
  114.                   break;
  115.             }
  116.       }
  117.       
  118.       
  119.       
  120.       while(p1->num != 0 )
  121.       {
  122.             n++;
  123.             if( 1 == n )
  124.             {
  125.                   head = p1;
  126.             }
  127.             else
  128.             {
  129.                   p2->next = p1;
  130.             }
  131.             
  132.             p2 = p1;
  133.             p1 = (struct student * ) malloc(LMN);
  134.             
  135.             printf("请输入学号 : ");
  136.             scanf("%d", &p1->num);
  137.             printf("请输入名字 : ");
  138.             scanf("%s", p1->name);
  139.             printf("请输入成绩 : ");
  140.             scanf("%f", &p1->score);
  141.             printf("\n");
  142.             if ( p1->score  > MAX || p1->score < 0 )
  143.             {
  144.                   printf("输入的成绩有误!!请输入正确的成绩 : ");
  145.                   scanf("%f", &p1->score);
  146.             }
  147.       }
  148.       
  149.       p2->next = NULL;
  150.       
  151.       return (head);
  152. }

  153. void print(struct student *head)
  154. {
  155.       struct student *p;
  156.       printf("\t现在这 %d 记录是 : \n", n );
  157.       p = head;
  158.       if(head != NULL)
  159.       {
  160.             do
  161.             {
  162.                   printf("\t学号 : %ld\t名字 : %s\t成绩 : %5.2f\n", p->num, p->name, p->score);
  163.                   p = p->next;
  164.             }while(p != NULL);
  165.       }
  166. }

  167. #if(1)
  168. struct student * del( struct student * head, int num )
  169. {
  170.       struct student *p1, *p2;
  171.       
  172.       if( head == NULL )
  173.       {
  174.             printf("这个列表为空!!\n");
  175.             
  176.             return head;
  177.       }
  178.       
  179.       
  180.       p1 = head;
  181.       while ( p1->num != num && p1->next != NULL )
  182.       {
  183.             p2 = p1;
  184.             p1 = p1->next;
  185.       }
  186.       if ( num == p1->num)
  187.       {
  188.             if ( head == p1 )
  189.             {
  190.                   head = p1->next;
  191.             }
  192.             else
  193.             {
  194.                   p2->next = p1->next;
  195.             }
  196.             
  197.             printf("\n成功删除 NO : %d !!\n", num);
  198.             n -= 1;
  199.       }
  200.       else
  201.       {
  202.             
  203.             printf("没有找到匹配的数据 : %d !\n", num);
  204.             
  205.       }
  206.       
  207.       
  208.       
  209.       return head;
  210. }

  211. #endif

  212. #if(1)
  213. struct student *insert( struct student *head, struct student *stu_2)

  214. {
  215.       struct student *p1, *p2, *p0;
  216.       
  217.       p1 = head;
  218.       p0 = stu_2;
  219.       if( NULL == head )
  220.       {
  221.             head = p0;
  222.             p0->next = NULL;
  223.       }
  224.       else
  225.       {
  226.             while( ( p0->num > p1->num) && ( p1->next != NULL) )
  227.             {
  228.                   p2 = p1;
  229.                   p1 = p1->next;
  230.             }
  231.             if( p0->num <= p1->num)
  232.             {
  233.                   if( p1 == head )
  234.                   {
  235.                         head = p0;
  236.                         p0->next = p1;
  237.                   }
  238.                   else
  239.                   {
  240.                         p2->next = p0;
  241.                         p0->next = p1;
  242.                   }
  243.             }
  244.             else
  245.             {
  246.                   p1->next = p0;
  247.                   p0->next = NULL;
  248.             }
  249.       }
  250.       n += 1;
  251.       
  252.       return head;
  253. }

  254. #endif
复制代码



我在第二次输入x键实现第二次插入时发现上一次的插入的数据不会显示,但是节点数还是正确的。
大家可以运行下试着按两下x键 就会发现问题了。
帮我看看这要怎么修改了,现在脑子有点乱,。。。。
最佳答案
2017-5-13 18:30:26
本帖最后由 超凡天赐 于 2017-5-14 10:48 编辑

先说说你犯的最主要的错误,那就是你需要再写一个getchar()来接受你最后输入所留下的\n,为什么?因为getchar()和scanf("%c",&n)一样,也可以接受\n。详情见c语言学习笔记--chapter0-getchar,scanf以及缓冲区的概念-fontconfig-ChinaUnix博客 http://blog.chinaunix.net/uid-20568790-id-1632289.html。如果没有前面的getchar(),你最后只能退出这个程序。因为ch的值实际上是\n。当然了你还有其他一些问题,比如出现了long型向int型赋值,还有就是你为什么要使用条件编译?等等 ,好了废话不多说,
  1. show you the code
复制代码

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define MAX 100      //满分成绩
  4. #define MIN 0           //最小成绩
  5. #define LMN sizeof(struct student)
  6. //student结构的大小
  7. struct student *create();           //创建链表
  8. void print(struct student *head);  //打印链表
  9. struct student *del( struct student *head, long num); //del函数用于删除节点,*head即链表的头指针,num是要删除的结点num。
  10. struct student *insert( struct student *head, struct student *stu_2 );
  11. //第一个参数需要被插入的链表。第二个参数待插入的结点的地址。
  12. struct student
  13. {
  14.     long num;
  15.     char name[20] ;
  16.     float score;
  17.     struct student *next;
  18. };
  19. int n = 0;                                  //全局变量,用来记录存放了多少节点。
  20. struct student *head = NULL;
  21. int main ()
  22. {
  23.     struct student * stu, *p, stu_2;
  24.     long num;
  25.     char ch;
  26.     float s;
  27.     s = MAX;
  28.     printf("小写字母 z 键是删除数据,小写字母 x 键是插入数据!!\n输入其它键则退出程序!!!\n\n");
  29.     printf("满分成绩为  %.1f 分!!!\n\n\n", s );
  30.     stu = create();
  31.     p = stu;
  32.     print(p);
  33.     printf("\n\n\n");
  34.     getchar();
  35.     while(1)
  36.     {
  37.         ch = getchar();
  38.         if(ch == 'z' )
  39.         {
  40.             printf("请输入需要删除的学号 : ");
  41.             scanf("%ld", &num);
  42.             print( del(p, num));
  43.         }
  44.         else if ( ch == 'x' )
  45.         {
  46.             printf("请输入新添加的学号 : ");
  47.             scanf("%ld", &stu_2.num);
  48.             printf("请输入新添加的名字 : ");
  49.             scanf("%s", stu_2.name);
  50.             printf("请输入新添加的成绩 : ");
  51.             scanf("%f", &stu_2.score);
  52.             printf("\n");
  53.             while(1)
  54.             {
  55.                 if( stu_2.score > MAX || stu_2.score < 0 )
  56.                 {
  57.                     printf("输入的成绩有误,请重新输入成绩 : ");
  58.                     scanf("%f", &stu_2.score);
  59.                 }
  60.                 else
  61.                 {
  62.                     break;
  63.                 }
  64.             }
  65.             p = insert( stu, &stu_2);
  66.             print(p);
  67.         }
  68.         else
  69.         {
  70.             break;
  71.         }
  72.     }
  73.     return 0;
  74. }
  75. struct student *create(void)               //创建链表
  76. {
  77.     struct student *p1, *p2;
  78.     p1 = p2 = ( struct student * ) malloc(LMN);
  79.     printf("请输入学号 : ");
  80.     scanf("%ld", &p1->num);
  81.     printf("请输入名字 : ");
  82.     scanf("%s", p1->name);
  83.     printf("请输入成绩 : ");
  84.     scanf("%f", &p1->score);
  85.     printf("\n");
  86.     while(1)
  87.     {
  88.         if( p1->score > MAX || p1->score < 0  )
  89.         {
  90.             printf("输入的成绩有误!\n请输入正确的成绩 : ");
  91.             scanf("%f", &p1->score);
  92.             printf("\n");
  93.         }
  94.         else
  95.         {
  96.             break;
  97.         }
  98.     }
  99.     while(p1->num != 0 )
  100.     {
  101.         n++;
  102.         if( 1 == n )
  103.         {
  104.             head = p1;
  105.         }
  106.         else
  107.         {
  108.             p2->next = p1;
  109.         }
  110.         p2 = p1;
  111.         p1 = (struct student * ) malloc(LMN);
  112.         printf("请输入学号 : ");
  113.         scanf("%ld", &p1->num);
  114.         printf("请输入名字 : ");
  115.         scanf("%s", p1->name);
  116.         printf("请输入成绩 : ");
  117.         scanf("%f", &p1->score);
  118.         printf("\n");
  119.         if ( p1->score  > MAX || p1->score < 0 )
  120.         {
  121.             printf("输入的成绩有误!!请输入正确的成绩 : ");
  122.             scanf("%f", &p1->score);
  123.         }
  124.     }
  125.     p2->next = NULL;
  126.     return (head);
  127. }
  128. void print(struct student *head)
  129. {
  130.     struct student *p;
  131.     printf("\t现在这 %d 记录是 : \n", n );
  132.     p = head;
  133.     if(head != NULL)
  134.     {
  135.         do
  136.         {
  137.             printf("\t学号 : %ld\t名字 : %s\t成绩 : %5.2f\n", p->num, p->name, p->score);
  138.             p = p->next;
  139.         }while(p != NULL);
  140.     }
  141. }
  142. struct student *del( struct student * head,long num )
  143. {
  144.     struct student *p1, *p2 = NULL;
  145.    
  146.     if( head == NULL )
  147.     {
  148.         printf("这个列表为空!!\n");
  149.         return head;
  150.     }
  151.     p1 = head;
  152.     while ( p1->num != num && p1->next != NULL )
  153.     {
  154.         p2 = p1;
  155.         p1 = p1->next;
  156.     }
  157.     if ( num == p1->num)
  158.     {
  159.         if ( head == p1 )
  160.         {
  161.             head = p1->next;
  162.         }
  163.         else
  164.         {
  165.             p2->next = p1->next;
  166.         }
  167.         
  168.         printf("\n成功删除 NO : %ld !!\n", num);
  169.         n -= 1;
  170.     }
  171.     else
  172.     {
  173.         printf("没有找到匹配的数据 : %ld !\n", num);
  174.     }
  175.     return head;
  176. }
  177. struct student *insert( struct student *head, struct student *stu_2)
  178. {
  179.     struct student *p1, *p2 = NULL, *p0;
  180.     p1 = head;
  181.     p0 = stu_2;
  182.     if( NULL == head )
  183.     {
  184.         head = p0;
  185.         p0->next = NULL;
  186.     }
  187.     else
  188.     {
  189.         while( ( p0->num > p1->num) && ( p1->next != NULL) )
  190.         {
  191.             p2 = p1;
  192.             p1 = p1->next;
  193.         }
  194.         if( p0->num <= p1->num)
  195.         {
  196.             if( p1 == head )
  197.             {
  198.                 head = p0;
  199.                 p0->next = p1;
  200.             }
  201.             else
  202.             {
  203.                 p2->next = p0;
  204.                 p0->next = p1;
  205.             }
  206.         }
  207.         else
  208.         {
  209.             p1->next = p0;
  210.             p0->next = NULL;
  211.         }
  212.     }
  213.     n += 1;
  214.     return head;
  215. }
复制代码

我的测试结果为
  1. 小写字母 z 键是删除数据,小写字母 x 键是插入数据!!
  2. 输入其它键则退出程序!!!

  3. 满分成绩为  100.0 分!!!


  4. 请输入学号 : 1001
  5. 请输入名字 : zhutianci
  6. 请输入成绩 : 99

  7. 请输入学号 : 1002
  8. 请输入名字 : zhutian
  9. 请输入成绩 : 98

  10. 请输入学号 : 0
  11. 请输入名字 : 0
  12. 请输入成绩 : 0

  13.         现在这 2 记录是 :
  14.         学号 : 1001        名字 : zhutianci        成绩 : 99.00
  15.         学号 : 1002        名字 : zhutian        成绩 : 98.00



  16. z
  17. 请输入需要删除的学号 : 1002

  18. 成功删除 NO : 1002 !!
  19.         现在这 1 记录是 :
  20.         学号 : 1001        名字 : zhutianci        成绩 : 99.00
  21. Program ended with exit code: 0
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-5-13 18:30:26 | 显示全部楼层    本楼为最佳答案   
本帖最后由 超凡天赐 于 2017-5-14 10:48 编辑

先说说你犯的最主要的错误,那就是你需要再写一个getchar()来接受你最后输入所留下的\n,为什么?因为getchar()和scanf("%c",&n)一样,也可以接受\n。详情见c语言学习笔记--chapter0-getchar,scanf以及缓冲区的概念-fontconfig-ChinaUnix博客 http://blog.chinaunix.net/uid-20568790-id-1632289.html。如果没有前面的getchar(),你最后只能退出这个程序。因为ch的值实际上是\n。当然了你还有其他一些问题,比如出现了long型向int型赋值,还有就是你为什么要使用条件编译?等等 ,好了废话不多说,
  1. show you the code
复制代码

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define MAX 100      //满分成绩
  4. #define MIN 0           //最小成绩
  5. #define LMN sizeof(struct student)
  6. //student结构的大小
  7. struct student *create();           //创建链表
  8. void print(struct student *head);  //打印链表
  9. struct student *del( struct student *head, long num); //del函数用于删除节点,*head即链表的头指针,num是要删除的结点num。
  10. struct student *insert( struct student *head, struct student *stu_2 );
  11. //第一个参数需要被插入的链表。第二个参数待插入的结点的地址。
  12. struct student
  13. {
  14.     long num;
  15.     char name[20] ;
  16.     float score;
  17.     struct student *next;
  18. };
  19. int n = 0;                                  //全局变量,用来记录存放了多少节点。
  20. struct student *head = NULL;
  21. int main ()
  22. {
  23.     struct student * stu, *p, stu_2;
  24.     long num;
  25.     char ch;
  26.     float s;
  27.     s = MAX;
  28.     printf("小写字母 z 键是删除数据,小写字母 x 键是插入数据!!\n输入其它键则退出程序!!!\n\n");
  29.     printf("满分成绩为  %.1f 分!!!\n\n\n", s );
  30.     stu = create();
  31.     p = stu;
  32.     print(p);
  33.     printf("\n\n\n");
  34.     getchar();
  35.     while(1)
  36.     {
  37.         ch = getchar();
  38.         if(ch == 'z' )
  39.         {
  40.             printf("请输入需要删除的学号 : ");
  41.             scanf("%ld", &num);
  42.             print( del(p, num));
  43.         }
  44.         else if ( ch == 'x' )
  45.         {
  46.             printf("请输入新添加的学号 : ");
  47.             scanf("%ld", &stu_2.num);
  48.             printf("请输入新添加的名字 : ");
  49.             scanf("%s", stu_2.name);
  50.             printf("请输入新添加的成绩 : ");
  51.             scanf("%f", &stu_2.score);
  52.             printf("\n");
  53.             while(1)
  54.             {
  55.                 if( stu_2.score > MAX || stu_2.score < 0 )
  56.                 {
  57.                     printf("输入的成绩有误,请重新输入成绩 : ");
  58.                     scanf("%f", &stu_2.score);
  59.                 }
  60.                 else
  61.                 {
  62.                     break;
  63.                 }
  64.             }
  65.             p = insert( stu, &stu_2);
  66.             print(p);
  67.         }
  68.         else
  69.         {
  70.             break;
  71.         }
  72.     }
  73.     return 0;
  74. }
  75. struct student *create(void)               //创建链表
  76. {
  77.     struct student *p1, *p2;
  78.     p1 = p2 = ( struct student * ) malloc(LMN);
  79.     printf("请输入学号 : ");
  80.     scanf("%ld", &p1->num);
  81.     printf("请输入名字 : ");
  82.     scanf("%s", p1->name);
  83.     printf("请输入成绩 : ");
  84.     scanf("%f", &p1->score);
  85.     printf("\n");
  86.     while(1)
  87.     {
  88.         if( p1->score > MAX || p1->score < 0  )
  89.         {
  90.             printf("输入的成绩有误!\n请输入正确的成绩 : ");
  91.             scanf("%f", &p1->score);
  92.             printf("\n");
  93.         }
  94.         else
  95.         {
  96.             break;
  97.         }
  98.     }
  99.     while(p1->num != 0 )
  100.     {
  101.         n++;
  102.         if( 1 == n )
  103.         {
  104.             head = p1;
  105.         }
  106.         else
  107.         {
  108.             p2->next = p1;
  109.         }
  110.         p2 = p1;
  111.         p1 = (struct student * ) malloc(LMN);
  112.         printf("请输入学号 : ");
  113.         scanf("%ld", &p1->num);
  114.         printf("请输入名字 : ");
  115.         scanf("%s", p1->name);
  116.         printf("请输入成绩 : ");
  117.         scanf("%f", &p1->score);
  118.         printf("\n");
  119.         if ( p1->score  > MAX || p1->score < 0 )
  120.         {
  121.             printf("输入的成绩有误!!请输入正确的成绩 : ");
  122.             scanf("%f", &p1->score);
  123.         }
  124.     }
  125.     p2->next = NULL;
  126.     return (head);
  127. }
  128. void print(struct student *head)
  129. {
  130.     struct student *p;
  131.     printf("\t现在这 %d 记录是 : \n", n );
  132.     p = head;
  133.     if(head != NULL)
  134.     {
  135.         do
  136.         {
  137.             printf("\t学号 : %ld\t名字 : %s\t成绩 : %5.2f\n", p->num, p->name, p->score);
  138.             p = p->next;
  139.         }while(p != NULL);
  140.     }
  141. }
  142. struct student *del( struct student * head,long num )
  143. {
  144.     struct student *p1, *p2 = NULL;
  145.    
  146.     if( head == NULL )
  147.     {
  148.         printf("这个列表为空!!\n");
  149.         return head;
  150.     }
  151.     p1 = head;
  152.     while ( p1->num != num && p1->next != NULL )
  153.     {
  154.         p2 = p1;
  155.         p1 = p1->next;
  156.     }
  157.     if ( num == p1->num)
  158.     {
  159.         if ( head == p1 )
  160.         {
  161.             head = p1->next;
  162.         }
  163.         else
  164.         {
  165.             p2->next = p1->next;
  166.         }
  167.         
  168.         printf("\n成功删除 NO : %ld !!\n", num);
  169.         n -= 1;
  170.     }
  171.     else
  172.     {
  173.         printf("没有找到匹配的数据 : %ld !\n", num);
  174.     }
  175.     return head;
  176. }
  177. struct student *insert( struct student *head, struct student *stu_2)
  178. {
  179.     struct student *p1, *p2 = NULL, *p0;
  180.     p1 = head;
  181.     p0 = stu_2;
  182.     if( NULL == head )
  183.     {
  184.         head = p0;
  185.         p0->next = NULL;
  186.     }
  187.     else
  188.     {
  189.         while( ( p0->num > p1->num) && ( p1->next != NULL) )
  190.         {
  191.             p2 = p1;
  192.             p1 = p1->next;
  193.         }
  194.         if( p0->num <= p1->num)
  195.         {
  196.             if( p1 == head )
  197.             {
  198.                 head = p0;
  199.                 p0->next = p1;
  200.             }
  201.             else
  202.             {
  203.                 p2->next = p0;
  204.                 p0->next = p1;
  205.             }
  206.         }
  207.         else
  208.         {
  209.             p1->next = p0;
  210.             p0->next = NULL;
  211.         }
  212.     }
  213.     n += 1;
  214.     return head;
  215. }
复制代码

我的测试结果为
  1. 小写字母 z 键是删除数据,小写字母 x 键是插入数据!!
  2. 输入其它键则退出程序!!!

  3. 满分成绩为  100.0 分!!!


  4. 请输入学号 : 1001
  5. 请输入名字 : zhutianci
  6. 请输入成绩 : 99

  7. 请输入学号 : 1002
  8. 请输入名字 : zhutian
  9. 请输入成绩 : 98

  10. 请输入学号 : 0
  11. 请输入名字 : 0
  12. 请输入成绩 : 0

  13.         现在这 2 记录是 :
  14.         学号 : 1001        名字 : zhutianci        成绩 : 99.00
  15.         学号 : 1002        名字 : zhutian        成绩 : 98.00



  16. z
  17. 请输入需要删除的学号 : 1002

  18. 成功删除 NO : 1002 !!
  19.         现在这 1 记录是 :
  20.         学号 : 1001        名字 : zhutianci        成绩 : 99.00
  21. Program ended with exit code: 0
复制代码

评分

参与人数 1鱼币 +5 收起 理由
小甲鱼 + 5 认真回答,点个赞!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-25 11:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表