لیست پیوندی دوطرفه چرخشی

oranoos_mta

New Member
سلام من اين برنامه اي که نوشتم مي خوام از تو يک فايل که وجود داره مثل فايل txt را بخوانم و اطلاعات داخل آن را بخونه و عمليات زير را داخلش انجام بده اينم بگم که فايل من ليستي از اسامي مي باشد (نام و نام خانوادگي )
چاپ ليست از آخر به اول به صورت بازگشتي و غير بازگشتي
مرتب سازي ليست به صورت صعودي با يکي از روشهاي sort
ادغام دو ليست که به صورت صعودي مرتب شده
حذف نامي از ليست
حذف اولين گره
حذف آخرين گره
من نصف برنامه رو نوشتم ولي تو پياده سازيش مشکل دارم خواهشن کمک کنيد واقعا لازم داردم
سالک من خیلی به کمکت احتیاج دارم وقت هم زیاد ندارم (فقط 2-3 روز) تا 87.4.2
HTML:
#include<iostream.h>
#include<String.h>
#include<fstream.h>
#include<stdlib.h>

typedef class LinkedList2 * ListPtr ;

#define MAX_SIZE 10

class LinkedList2
{
	ListPtr LLink;

	char* Data;

	ListPtr RLink;

	public:
		LinkedList2()//constructor
		{
			LLink = RLink = NULL ;
		}

		GetData(char* str , ListPtr llink , ListPtr rlink )
		{
			strcpy( Data , str ); 
			LLink = llink ; 
			RLink = rlink ;
		}
	
	friend void AddNode( ListPtr node , ListPtr new_node );
	friend void DeleteNode( ListPtr node , ListPtr HeadNode);
	friend ListPtr FindNode( ListPtr HeadNode , char* str );
	friend void Sort( ListPtr HeadNode , ListPtr node );

	
};



// in tabe newnode ra bad az node darj mikonad
void AddNode( ListPtr node , ListPtr new_node )
{
	new_node->RLink = node->RLink;
	new_node->LLink = node ;
	node->RLink->LLink = new_node ;
	node->RLink = new_node;
} 


void DeleteNode( ListPtr node , ListPtr HeadNode)
{
	if ( node == HeadNode )
	{
		cout<<"\npak kardane head node mojaz nemibashad\n";
		return;
	}
	node->LLink->RLink = node->RLink ;
	node->RLink->LLink = node->LLink ;

	delete node ;

}


//adrese nodi ke datayash barabar ba str bashad

ListPtr FindNode( ListPtr HeadNode , char* str )
{
	ListPtr ptr = HeadNode ;

	do
	{
		ptr = ptr->RLink ;
		if ( ptr->Data  == str )
			return ptr;
	}while ( ptr != HeadNode );

	return NULL;//agar halgheye bala return nakonad yani pyda nakarde
}


void Sort( ListPtr HeadNode , ListPtr node )
{
	if ( node == HeadNode )
		return;//hichi moratab ast

	//----------------------------

	Sort( node->RLink , HeadNode );

	//darj node dar list moratab shode

	ListPtr temp = node->RLink ;//nodhaye bad az nod ra baraye yaftane makane dorost migardim

	for ( ; (temp != HeadNode/*payan*/) && ( temp->Data < node->Data ) ; temp = temp->RLink );
	
	temp = temp->LLink ; 

	ListPtr newnode = new LinkedList2 ;
	newnode->GetData( node->Data , node->LLink , node->RLink );

	AddNode( temp , newnode );

	DeleteNode( node , HeadNode );
}



main()
{
	fstream file;

	char str[60];
	char x;
	cout<<"lotfan adrese file ra vared konid \n";
	cin>>str;

	file.open( str , ios::in);

	int k=0;
	while(1)
	{
		file>>x;
		if(file.fail()) break;
	cout<<x;
	if(x=='#')
		k++;
	if(k==2){
		cout<<endl;
		k=0;
	}
	}

}
 

جدیدترین ارسال ها

بالا