데이터 구조 - 10 양 방향 링크 삽입 및 삭제 노드

2885 단어 데이터 구조
양 방향 링크 - 지정 한 위치 와 같은 노드 삽입, 삭제
양 방향 링크 - 지정 한 위치 와 같은 노드 삽입, 삭제
#include
using namespace std;
struct node       //node   ,      node  ,     /   node  
{
	int x;
	node *left;   //         ,         
	node *right;
};

node* create(int n)         //    ,  n       ,         node*
{
	if(n<1)                 //    ,         
	{
		cout<x=i;
		p->right=temp;            // p right     temp,           
		temp->left=p;             //temp left  p,   left       
		p=temp;                   // p     temp, p        
	}


	p->right=NULL;                //     ,p->right  ,       right null
	head->right->left=NULL;       //     ,      left null

	return head;
}

void display(node *head)         //    
{
	node *p;
	p=head->right;               //p             , for          
	if(p==NULL)
		cout<x<right;
	}
	cout<right;

	node *temp=new node;         //   ,     node *temp;        ,      ,   new  

	temp->x=data; 
	temp->left=p;                //     
	temp->right=p->right;        //temp   p     
	p->right=temp;               //p temp  
	
}


void remove(node *head,int pos)  //   head    pos    
{
	node *p;
	p=head;                      //p       ,      for          ,             
	
	while(--pos)                 //            ,             ,  ,      ,         ,    removeSame()  
		p=p->right;

	node *temp;                  //   ,    node *temp;          ,     

	temp=p->right;               //temp            //     bug,       
	p->right=temp->right;        //p                
	
	if(temp->right!=NULL)        //                   ,   ,  temp->right==NULL,       ,bug  
	temp->right->left=p;         //                           ,           

}

void removeSame(node *head)      //   head       
{
	node *p,*t;
	node *temp;                  //   ,    node *temp;          ,     
	p=head->right;               //p              ,          
	
	while(p)   
	{
		t=p->right;              //                 
		while(t)
		{
			if(p->x==t->x)       //    ,  
			{             
				temp=p;                           //temp           
				p->left->right=temp->right;       //      ,    left  ,                
				//if(temp->right!=NULL)           //     t  ,t p      ,             ,      
				p->right->left=temp->left;        //      
				break;
			}
			t=t->right;
		}
	
		p=p->right;
	}

}


int main()
{
	node *list; 
	list=create(10);             //    
	display(list);               //         ,      ,    
	
	insert(list,11,3);           //    ,   、              
	display(list);


	remove(list,10);             //    ,   、              
	display(list);


	insert(list,8,3);  	display(list);
	removeSame(list);
	display(list);

	return 0;
}

좋은 웹페이지 즐겨찾기