데이터 구조 선형 링크 클래스
//////////////////////////////////////////////////////////////////////////
/* 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
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
정수 반전Udemy 에서 공부 한 것을 중얼거린다 Chapter3【Integer Reversal】 (예) 문자열로 숫자를 반전 (toString, split, reverse, join) 인수의 수치 (n)가 0보다 위 또는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.