小编uma*_*tan的帖子

在C中while循环中切换语句

在while循环中有几个关于switch语句的帖子,除了它们都没有在C语言中完成的事实,至少从我看到的情况来看.C++可以创建布尔表达式,我知道,但不是在C中.我有一个包含开关控件的while循环.但是,当我在switch中编写break语句时,它会回到循环的开头并使我的程序永远运行.忽略我使用的功能,因为它们肯定会起作用.我只需要澄清一下我对嵌套的处理方法.谢谢!

Here is my main.c:

while(1)
{
    printf("0) Exit\n1) List Tasks\n2) Add Task\n");                                            
    printf("3)Delete Task\n4) Add Task From File\n");                                           
    printf("What would you like to do?\n");
    fgets(buf1, 50, stdin);                                                                     
    p = atoi(buf1);
    switch(p)
    {
          case 0: 
            break;
          case 1: 
            printTaskList(pTaskList);
            break;
          case 2:
            printf("Enter task name: ");
            fgets(buf2,100,stdin);
            printf("Enter task priority: ");
            fgets(buf3,100,stdin);
            printf("Enter task start date: ");
            fgets(buf4,50,stdin);
            pTask = makeTask(buf2,buf4,buf3);
            addTaskToEnd(pTaskList,pTask);
            break;
          case 3:
            printTaskList(pTaskList);
            printf("What task would you like to delete? ");
            fgets(buf6,50,stdin);
            taskNum = atoi(buf6);
            removeTask(pTaskList,taskNum);
            break; …
Run Code Online (Sandbox Code Playgroud)

c loops infinite-loop while-loop switch-statement

6
推荐指数
1
解决办法
5万
查看次数

为什么我的删除节点功能不起作用?

我已经检查了电路板,但却找不到任何帮助.我发现给定基本和一般情况下的递归函数很容易,但这不像我这样做.我应该迭代一个列表,直到我到达链表的尾部.如果下一个节点为NULL,那么我必须将值存储在最后一个节点,删除该节点,然后返回该值.所以它类似于一个dequeue方法,除了它是递归执行的.我究竟做错了什么?

int LinkedList::removeTailRec(Node *n)
{
    // check for the base case(s)
    if(n->next == NULL)
    {
        Node *tmp = new Node();
        tmp = n;
        int val = n->value;
        tmp = NULL;
        return val;
    }
    else
        return removeTailRec(n->next);

    // else call the recursive method
}
Run Code Online (Sandbox Code Playgroud)

c++ recursion linked-list

3
推荐指数
1
解决办法
223
查看次数