مشکلی در آزاد کردن فضای آرایه در linked list - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

مشکلی در آزاد کردن فضای آرایه در linked list

0 امتیاز

یک شبه کدی برای Linked list دارم می نویسم ؛یک مشکلی در آزاد کردن فضای اختصاص داده شده به 3 آرایه موجود پیش میاد در صورتی که خطوط 53,54,55 را comment می کنم به نتیجه مورد نظرم می رسم :

#include <iostream>
#include<conio.h>
using namespace std;
int x,*key,*next,*pre,p,n,add=0;

void insert(int key[],int k)
{
x++;
key[x-1]=k;
p=x-1;
pre[add]=p;
pre[x-1]=-1;
next[x-1]=add;
add=x-1;
}

void main()
{
	int i,y;
	cin>>x;
	key=new int[x];
	next=new int[x];
	pre=new int[x];
	for(i=0;i<x;i++)
	{
		cin>>key[i];
		pre[i]=i-1;
		if(i==x-1)
			next[i]=-1;
		else
			next[i]=i+1;
	}				
	p=pre[0];
	n=next[x-1];
	cout<<"\n"<<"Enter Number for insert to Linked List:\n";
	cin>>y;
	insert(key,y);
	insert(key,y);
	insert(key,y);
	insert(key,y);
	cout<<"\n";	
	cout<<"Next: \n";
	for(i=0;i<x;i++)
		cout<<next[i]<<"   ";

	cout<<"\n"<<"Key:\n";	
	for(i=0;i<x;i++)
		cout<<key[i]<<"   ";

	cout<<"\n"<<"Pre: \n\n";
	for(i=0;i<x;i++)
		cout<<pre[i]<<"   ";
	delete[] key;
	delete[] pre;
	delete[] next;
	getch();
}

 

سوال شده اسفند 25, 1392  بوسیله ی Pakniat (امتیاز 247)   9 21 32
دوباره تگ گذاری شد فروردین 11, 1393 بوسیله ی BlueBlade

1 پاسخ

+2 امتیاز

شما داری توی تابع x رو ++ می کنی پس مقدارش عوض میشه

بعد از insert

این کد رو داری :

 for(i=0;i<x;i++)
        cout<<key[i]<<"   ";

ولی key قبلا با یک x با مقدار کمتر new شده بوده

برای همین داری  به عناصر غیر مجازkey  دست میزنی که مشکل سازه  و برنامت به همین دلیل ارور میده

چند تا نکته :

1_ سعی کن هیچ وقت متغیر global تعریف نکنی .

2_به جای آرایه  از vector استفاده کن

3_ بهتر نیست این for رو این جوری بنویسی ؟

    for(i=0;i<x;i++)
    {
        cin>>key[i];
        pre[i]=i-1;
        if(i==x-1)
            next[i]=-1;
        else
            next[i]=i+1;
    }

///

--


for(i=0;i<x;i++)
{
    cin>>key[i];
    pre[i]=i-1;  
    next[i]=i+1;
}
next[x-1]=-1;

 

4_ کامپایلرت به نظر میرسه خیلی قدیمیه . عوضش کن

5- از conio استفاده نکن به جای getch بنویس cin.get()

پاسخ داده شده اسفند 25, 1392 بوسیله ی BlueBlade (امتیاز 15,315)   15 18 89

ممنون؛ این پیغام رو می ده :

اون مشکل x که گفتم رو درست کردی ؟
شکی نیست که مشکل ازهمون x++ هست اما می خوام زمانیکه یک عنصر به آرایه اضافه میشه اندازه آرایه پویا باشه
اگر می خوای پویا باشه راهش استفاده از آرایه نیست اصلا .
...