اسم استراکت اول linkedlisttt هست نه linkedlistt چندجا اشتباه نوشتید
داخل ++C نباید برای تعریف متغیر قبلش struct گذاشت درست نیست
بدلیل این کدتون ارور میده که 2 تا struct کاملا متفاوت ساختید برای هر لینک لیست .
2 تا struct متفاوت رو نمیشه در حالت معمولی با هم مساوی گذاشت یا مثل سوال قبلیتون هر 2تا لینک لیست رو از یک struct بسازید یا کست کنید
یا یک تابع جدا برای deep copy تعریف کنید داخل 2 تا لیست برید جلو و دیتا ها رو کپی کنید
به این شکل مثلا :
#include <iostream>
struct linkedlisttt
{
int data;
linkedlisttt *badi;
};
struct linkedlist
{
int data;
linkedlist *badi;
};
//paksazi linklist
void clear(linkedlisttt* head){
while (head != NULL){
linkedlisttt* temp = head->badi;
delete head;
head = temp;
}
}
//copy az src be dst
void deep_copy(linkedlist* src, linkedlisttt** dst)
{
clear(*dst);
linkedlisttt** dst_ptr = dst;
if (src != NULL){
*dst = new linkedlisttt;
(*dst)->data = src->data;
dst_ptr= dst;
dst_ptr = &(*dst_ptr)->badi;
src = src->badi;
}
else return;
while (src != NULL)
{
(*dst_ptr) = new linkedlisttt;
(*dst_ptr)->data = src->data;
dst_ptr = &(*dst_ptr)->badi;
src = src->badi;
}
(*dst_ptr) = NULL;
}
int main()
{
linkedlist *sar=NULL;
linkedlisttt *sar1=NULL;
sar = new linkedlist;
sar->data = 14;
sar->badi = new linkedlist;
sar->badi->data = 23;
sar->badi->badi = new linkedlist;
sar->badi->badi->data = 98;
sar->badi->badi->badi = NULL;
///injaaa
deep_copy(sar, &sar1);
std::cout << sar1->badi->badi->data;
///injaaa
system("pause");
};