linearLinkedList.h
#include <iostream>
#include <string>
using namespace std;
struct Node
{
int data;
Node *next;
Node(int a){data=a; next=NULL;}
};
class LinkList
{
public:
LinkList();
void Insert(int data, int pos);
// void Remove(int data);
// int Length();
// void Reverse();
int Find(int data);
void Print();
~LinkList();
private:
Node *head;
int length;
};
linearLinkedList.cpp
#include <string>
#include <iostream>
#include "linearLinkedList.h"
using namespace std;
LinkList::LinkList()
{
head = NULL;
length = 0;
}
void LinkList::Insert(int data, int pos)
{
if(pos < 0 || pos > length)
{
cout << "ValueError: pos not right." << endl;
return;
}
Node *tmp = head;
Node *node = new Node(data);
if(pos == 0)
{
node->next = tmp;
head = node;
length++;
return;
}
int idx = 1;
while(tmp != NULL && idx < pos)
{
tmp = tmp->next;
idx++;
}
node->next = tmp->next;
tmp->next = node;
length++;
return;
}
LinkList::~LinkList()
{
Node *tmp;
for(int i=0; i < length; i++)
{
tmp = head;
head = head->next;
delete tmp;
}
}
int LinkList::Find(int data)
{
//
Node *tmp = head;
int idx = 1;
while(tmp != NULL)
{
if(tmp->data == data)
return idx;
tmp = tmp->next;
idx++;
}
return -1;
}
void LinkList::Print()
{
if(head == NULL)
{
cout << "Empty LinkList." << endl;
return;
}
Node *tmp = head;
while(tmp != NULL)
{
cout << tmp->data << " ";
tmp = tmp->next;
}
cout << endl;
}
int main()
{
LinkList h;
h.Insert(1, 0);
h.Insert(2, 1);
h.Insert(3, 2);
h.Print();
}
result
junr$ ./a.out
1 2 3