gpt4 book ai didi

c++ - 在指定元素前插入节点

转载 作者:行者123 更新时间:2023-11-28 07:52:16 25 4
gpt4 key购买 nike

我有 Stack,我需要在指定元素之前插入节点,这段代码有效,但我需要没有 count 和 count1 的代码,因为排序不起作用。你能帮我重写代码吗?我试图用代码做一些事情,但它不起作用

void Stack::stackA(Item *q,Item *q1) // q - specified element, q1 - new element
{

int count=0;
int count1=0;
for (Item *i=this->first;i;i=i->next)
{
count++;
if (*i == *q) // Here we find position of the specified element
break;
}


for (Item *i=this->first;i;i=i->next)
{

Item *temp=new Item(*q1);

if(*this->first == *q) // if element first
{
this->first=temp;
temp->next=i;
break;
}
if (count1+1==count-1) //count-1,insert before specified element
{
if(i->next)
temp->next=i->next;
else
temp->next=0;
i->next=temp;
}
count1++;
}
}

最佳答案

这里的目标是找到q之前的节点,设置它的nextq1,然后设置q1->next q

void Stack::stackA(Item *q,Item *q1) // q - specified element, q1 - new element
{
Item* item = this->first;
if (item == q) {
this->first = q1;
q1->next = q;
return;
}
while (item != null) {
if (item->next == q) {
item->next = q1;
q1->next = q;
break;
}
item = item->next;
}
}

更新:处理了如果 q 是第一项的情况。

关于c++ - 在指定元素前插入节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13536779/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com