List.h
#ifndef _LIST_H
typedef struct Node* PtrNode;
typedef struct Node* List;
typedef struct Node* Position;
void Insert (int X, List L, Position P);
void CreateListByArray (List *L,int A[], int N);
void DeleteList(List L);
Position Find(int X, List L);
#endif
struct Node
{
int m_value;
PtrNode m_next;
};
List.cpp
#include <Stdafx.h>
#include "List.h"
void Insert (int X, List L, Position P)
{
if (L == NULL || P == NULL)
return;
PtrNode node = new Node;
node->m_value = X;
node->m_next = P->m_next;
P->m_next = node;
}
void CreateListByArray (List *L,int A[], int N)
{
if (A == NULL || L == NULL || N == 0)
return;
Position P = NULL;
P = new Node;
P->m_value = A[0];
P->m_next = NULL;
*L = P;
for (int i=1; i<N; i++)
{
Insert(A[i],*L,P);
P = P->m_next;
}
}
void DeleteList(List L)
{
Position P = L;
while (L)
{
L = L->m_next;
delete P;
P = L;
}
}
Position Find(int X, List L)
{
Position P = L;
while (P->m_value != X && P != NULL)
P = P->m_next;
return P;
}