선형 표: 체인 식 저장 구 조 는 예시 코드 2 (삽입, 삭제, 찾기) 를 실현 한다.

본 사례 는 학급 학생 성적 을 예 로 들 어 순서 표 의 체인 저장 구조의 조작 기능 을 실현 한다.
#include   //              

/*************************************/
/*****                      *****/
/*****               *****/
/*************************************/

template 
struct Node
{
      DataType data;
      Node *next;  
};

template 
class LinkList
{
public:
	LinkList( );                         //    ,        
	LinkList(DataType a[ ], int n);      //    ,   n       
	~LinkList( );                        //    
	int Locate(DataType x);              //    。         x     
	void Insert(int i, DataType x);      //    , i         x   
    DataType Delete(int i);              //    ,        i   
	void PrintList( );                   //    ,          
private:
	Node *first;               //       
};

/********************************/
/*****             *****/
/*****             *****/
/********************************/

template 
LinkList :: LinkList( )
{
	first = new Node;                        //     
	first->next = NULL;                      //         
}

template   
LinkList :: LinkList(DataType a[ ], int n)
{
	Node *r, *s;
	first = new Node;                    //     
	r = first;                            //      
	for (int i = 0; i < n; i++)
	{ 
		s = new Node; s->data = a[i];        //             
		r->next = s; r = s;                 //   s         
	}
	r->next = NULL;        //       ,           
}

template 
LinkList :: ~LinkList( )
{
	Node *q;
	while (first != NULL)        //                
	{
		q = first;                 //       
		first = first->next;         // first             
		delete q;    
	}
}

template   
void LinkList :: Insert(int i, DataType x)
{
	Node *p = first, *s;
	int count = 0;               //    p      
    while (p != NULL && count < i - 1)  //   i - 1   
    {
		p = p->next;                   //    p  
		count++;
    }
    if (p == NULL) throw "  ";      //     i - 1   
    else {
		s = new Node;  s->data = x;     //      s,     x
		s->next = p->next; p->next = s;   //   s     p  
    }
}

template   
DataType LinkList :: Delete(int i)
{
	Node *p, *q;
	DataType x;
	int count = 0; 
	p = first;               //      p      
	while (p != NULL && count < i - 1)  //   i-1   
	{
		p = p->next;
		count++;
	}
	if (p == NULL || p->next == NULL)  //  p    p        
		throw "  "; 
	else {
		q = p->next; x = q->data;         //      
		p->next = q->next;              //  
		delete q; 
		return x;
	}
}

template   
int LinkList :: Locate(DataType x) 
{
	Node *p = first->next;
	int count = 1;         //    p    count   
	while (p != NULL)    
	{
		if (p->data == x) return count;     //    ,         
		p = p->next;                   
		count++;
	}
	return 0;                        //          
}

template 
void LinkList :: PrintList( )
{
	Node *p = first->next;                 //    p   
	while (p != NULL)
	{
		cout << p->data<next;                 //    p  
	}
	cout< ScoreList(Score, 5);       //         
  cout<

여러분, 프로그램 실행 결 과 를 분석 해 보 세 요.다른 구체 적 인 데이터 형식 으로 바 꾸 려 고 시도 할 수 있 습 니 다.예 를 들 어 학생 정보 에 등교 번호 등 정 보 를 추가 하 는 것 이다.

좋은 웹페이지 즐겨찾기