mt1425 发表于 2019-12-18 19:33

求大佬解答这个C语言列表问题

int main()
{

        List l3,l2,l4;
        List* l1 = &l3;;
        l2 = *(ttt)malloc(sizeof(List));
        l3 = *(ttt)malloc(sizeof(List));
        l4 = *(ttt)malloc(sizeof(List));

        printf("************\nList工具设计\n************\n\n");
        while (1)
        {
                printf("\n\n请输入你所要实现的功能:\n");
                printf("1.初始化/切换List\n2.向列表的尾部追加指定的元素\n3.在列表的指定位置插入指定元素\n4.从列表中移除所有元素\n5.列表包含指定的元素\n6.返回列表中指定位置的元素\n7.返回列表中首次出现指定元素的索引\n8.如果列表不包含元素\n9.返回列表中最后出现指定元素的索引\n10.移除列表中指定位置的元素\n11.移除列表中出现的首个指定元素\n12.从列表中移除指定 List c 中包含的所有元素\n13.用指定元素替换列表中指定位置的元素\n14.返回列表中的元素数\n");
                int k;
                scanf_s("%d", &k);
                if (k == 1)
                {
                        printf("请选择您需要切换的list");
                        int kk;
                        scanf_s("%d", &kk);
                        if (kk == 1)
                        {
                                List* l1 = &l3;
                        }
                        else if (kk == 2)
                        {
                                List* l1 = &l2;
                        }
                        List_Init(l1);
                        printf("初始化完成\n");
                        getchar();
                        printf("请按任意键继续...\n");
                        getchar();

                }
我这是摘了我写的其中的一部分,求大佬解答在运行的时候怎么由l2切换成l3,在对l3进行一些操作。
总之就是分别对l2,l3进行操作

z1390595 发表于 2020-1-13 10:11


#include "stdio.h"

struct List{
   int value;
};

int main()
{
       
    List l3,l2,l4;
    List* l1 = &l3;
        l3.value = 3;
        l2.value = 2;
    printf("************\nList工具设计\n************\n\n");
    while (1)
    {
      printf("\n\n请输入你所要实现的功能:\n");
      printf("1.初始化/切换List\n2.向列表的尾部追加指定的元素\n3.在列表的指定位置插入指定元素\n4.从列表中移除所有元素\n5.列表包含指定的元素\n6.返回列表中指定位置的元素\n7.返回列表中首次出现指定元素的索引\n8.如果列表不包含元素\n9.返回列表中最后出现指定元素的索引\n10.移除列表中指定位置的元素\n11.移除列表中出现的首个指定元素\n12.从列表中移除指定 List c 中包含的所有元素\n13.用指定元素替换列表中指定位置的元素\n14.返回列表中的元素数\n");
      int k;
      scanf("%d", &k);
      if (k == 1)
      {
            printf("请选择您需要切换的list");
            int kk;
            scanf("%d", &kk);
            if (kk == 1)
            {
                l1 = &l3;
            }
            else if (kk == 2)
            {
                l1 = &l2;
            }
                        printf("%d\n",l1->value);
            //List_Init(l1);
            //printf("初始化完成\n");
            getchar();
            printf("请按任意键继续...\n");
            getchar();

      }
        }
       
        return 0;       
}


删了点、加了点东西用于调试,测试结果是选1输出l2的值,选2输出l3的值。
主要问题我认为应该是出在这里

            scanf_s("%d", &kk);
            if (kk == 1)
            {
                List* l1 = &l3;
            }
            else if (kk == 2)
            {
                List* l1 = &l2;
            }

l1已经是结构指针了,为什么在使用的时候要重新定义?直接使用l1=&l2这样来切换不就好了?
页: [1]
查看完整版本: 求大佬解答这个C语言列表问题