데이터 구조 선형 링크 클래스

헤더 파일:
//////////////////////////////////////////////////////////////////////////
/*                   Author: bizhu12                                    */
/*                   Timer : 2011.07.02                                 */
/*                       : VS2008                                    */
//////////////////////////////////////////////////////////////////////////



//      

#pragma once

#include "targetver.h"

#include <stdio.h>
#include <tchar.h>

#ifndef List_H_
#define List_H_


struct ListNode
{
	int  Data;
	ListNode *pNext;
};


class List
{
public:
	List();
	ListNode*  CreateList(int);  //    
	void       PrintList(ListNode *); //    
	int        InsertNode(ListNode *,ListNode *,int); //        1,  0
	ListNode*  DeleteNode(ListNode *,int); //       ,NULL     
	int        SortList(ListNode *);  //      ,       
	int        DestroyList(ListNode  *); //      

private:
	int  NodeCount; //      
};
#endif


 
 
 
 
 
 
Cpp 파일:
 
// LinkList.cpp :              。
//

#include "stdafx.h"
#include <iostream>
using namespace std;


List::List()
{
	NodeCount = 0; //   
}

//    
ListNode* List::CreateList(int  count) //count              
{
	ListNode * pHead = NULL;
        ListNode *p = new ListNode;       //    
	memset(p,0,sizeof(ListNode));     //    
	ListNode *pTemp = pHead = p;

	int  i = 0;
	cout << "  " << count << "  :" << endl;
	while(i < count)
	{
       //              
	   p = new ListNode;
	   memset(p,0,sizeof(ListNode));
	   cin >> p->Data;
	   pTemp->pNext = p;
	   pTemp = p;
	   i++;
	}
	NodeCount = count;
	return pHead; //     
}


void List::PrintList(ListNode * pHead)
{
   if (pHead)
   { 
	   //      
	   pHead = pHead->pNext;
	   cout <<endl <<"    : ";
	   while(pHead)               //       
	   {   
		   cout << pHead->Data << "  ";
		   pHead = pHead->pNext;
	   }
	   cout << endl;
   }
   else
	   return;
}

//    
int  List::InsertNode(ListNode *pHead,ListNode *Node,int Seat)
{
      //Node        ,Seat      
     int  i = 1;
     if (pHead)   //         
     {   
	//               +1 ;       ,
	//             (NodeCount+2)
        if (Seat > NodeCount +1)
        {
	   return 0; //  >=     +2
        }

		ListNode *p = pHead;
        
		//  
		while(i < Seat)
		{
		  p = p->pNext;
		  i++;
		}
                //  
		Node->pNext = p->pNext;
		p->pNext = Node;
		NodeCount++; //    +1;
		return 1;
    }
	return 0;
}

//    
ListNode * List::DeleteNode(ListNode *pHead,int Seat)
{
	
	if (pHead)
	{   
		int  i = 1;
		ListNode *pTemp = NULL;
                ListNode *p = pHead;
		if (Seat > NodeCount)
		{
			return NULL; //          
		}
          
		//  
		while(i < Seat)
		{
			p = p->pNext;
			i++;
		}

		//      
		pTemp = p->pNext;
                p->pNext = pTemp->pNext;
		NodeCount--;    //      
		return pTemp;   //       
	}
	return NULL;
}

//       ,    
int List::SortList(ListNode *pHead)
{
    if(pHead)
	{
		ListNode *p = pHead;
		ListNode *pTemp = NULL;
		ListNode *Temp2 = new ListNode;
		memset(Temp2,0,sizeof(ListNode));
                p = p->pNext;
		
		for (  ; p  ; p = p->pNext)
		{
			
		   for (pTemp = p->pNext;  pTemp ; pTemp = pTemp->pNext )
		  {
                      if (p->Data > pTemp->Data)
                       {
				   //       
                                   Temp2->Data = p->Data;
				   p->Data = pTemp->Data;
				   pTemp->Data = Temp2->Data;
                       }
		   }
		}
		return 1; //    1
	}
	return 0; //  0
}

//      
int List::DestroyList(ListNode *pHead) 
{
	if (pHead)
	{
		ListNode *p = pHead;
		ListNode *pTemp = pHead;
		while(p)
		{
                  p = p->pNext;
		  delete(pTemp);
		  pTemp = p;
		}
                pHead = NULL;
		NodeCount = 0;
		return 1; //    1
		
	}
	return 0; //    0
}

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

좋은 웹페이지 즐겨찾기