如何获得另一个链表中链表的奇数索引节点?我不想使用双指针

问题描述 投票:-1回答:1

我不想在代码中使用双指针,请假定第一个节点的索引为1。我有一个链表10-> 20-> 30-> 40-> 50-> 60-> 70-> 80-> 90-> 100-> NULL在另一个指针为pLink的链表中,我想复制奇数索引节点并将输出显示为10-> 30-> 50-> 70-> 90-> NULL 。

    SLLI*OddNodes(SLLI*pHead)
{
    int counter =1;
    SLLI*pTemp=pHead;
    SLLI*pList=NULL;
    while(pTemp != NULL)
    {
        if(counter % 2 != 0)
        {
           if(pList==NULL)
           {
               pList=malloc(sizeof(SLLI));
               pList->data=pTemp->data;
               pList->next=NULL;
           }
           else
           {
               SLLI*pIter=pList;
               SLLI*pNew=malloc(sizeof(SLLI));
               pNew->data=pTemp->data;
               pNew->next=NULL;
               pIter->next=pNew;
               pIter=pIter->next;

           }
        }
        pTemp=pTemp->next;
        counter ++;
    }
    return pList;
}

运行此代码时,我得到的输出为10-> 90-> NULL,我知道“ else”部分有问题。 SLLI * pIter = pList没有任何意义,但是我应该怎么做才能消除此错误?

c algorithm data-structures singly-linked-list
1个回答
0
投票

我想问题是pList语句中的else根本没有更改。

不会成功的方法:

SLLI*OddNodes(SLLI*pHead)
{
   int counter =1;
   SLLI*pTemp=pHead;
   SLLI*pList=NULL;
   SLLI*pNewHead=NULL;

   while(pTemp != NULL)
   {
      if(pList==NULL)
      {
          pList=malloc(sizeof(SLLI));
          pList->data=pTemp->data;
          pList->next=NULL;
          pNewHead = pList;
      }
      else
      {
         pList->next = malloc(sizeof(SLLI));
         pList->next->data = pTemp->data;
         pList->next->next = NULL;
         pList = pList->next;
      } 
      pTemp = pTemp->next;
      counter++
   }

   return pNewHead;
}

此外,我会检查malloc是否成功

© www.soinside.com 2019 - 2024. All rights reserved.