.h文件
#pragma once
#include "string"
#include "iostream"
using namespace std;
struct Info
{public :
Info(string n, int i):name(n),ID(i){}
string name;
int ID;
};
struct Node
{
Info val;
Node *next;
Node(Info v) :val(v), next(NULL) {};
};
class LinkList
{
public:
LinkList();
void insertHead(Info val);
void insert(Info val, int pos);
void remove(Info val);
int length();
void reverse();
int find(Info val);
void print();
~LinkList();
private :
Node *head;
int l;
};
.cpp文件
#include "LinkList.h"
#include "iostream"
#include "string"
using namespace std;
LinkList::LinkList()
{
head = NULL;
l = 0;
};
LinkList::~LinkList()
{
Node *temp;
for (int i = 1;i <= l;i++)
{
temp = head;
head = head->next;
delete temp;
}
}
int LinkList::length()
{
return l;
}
void LinkList::insertHead(Info val)
{
insert(val, 0);
}
void LinkList::insert(Info val, int pos)
{
if (pos<0)
{
cout << "out of range" << endl;
return ;
}
int index = 1;
Node *temp = head;
Node *node = new Node(val);
if (pos == 0)
{
node->next = temp;
head = node;
l++;
return;
}
while (temp != NULL&&index != pos)
{
temp = temp->next;
index++;
}
if (temp == NULL)
{
cout << "insert is out of range" << endl;
return;
}
node->next = temp->next;
temp->next = node;
/*Node *pnode;
pnode = temp->next;
temp = node;
temp->next = pnode;*/
l++;
}
void LinkList::remove(Info val)
{
int i = find(val);
if (i == 0)
{
cout << "can't find this name" << endl;
return;
}
Node *temp = head;
for (int j = 0;j< i-1;j++)
{
temp = temp->next;
}
Node *t = temp->next;
temp->next = t->next;
delete t;
l--;
}
int LinkList::find(Info val)
{
Node *temp = head;
int i = 1;
while (i <= l)
{
if (temp->val.name == val.name&&temp->val.ID == val.ID)
return i;
i++;
temp = temp->next;
}
//return i;
if (i == l+1)
return -1;
}
void LinkList::reverse()
{
Node *p, *q, *r;
p = head;
q = head->next;
head->next = NULL;
while(q->next)
{
r = q->next;
q->next = p;
p = q;
q = r;
//cout <<p->val.name<< q->val.name << endl;
}
q->next = p;
head = q;
}
void LinkList::print()
{
Node *temp = head;
while (temp != NULL)
{
cout << temp->val.name << ends << temp->val.ID << endl;
temp = temp->next;
}
}
测试文件
#include "LinkList.h"
#include "string"
using namespace std;
void main()
{
LinkList L;
Info val1("li", 01), val2("zhang", 02), val3("song", 03), val4("wang", 04);
L.insertHead(val1);
L.insert(val2, 1);
L.insert(val3, 2);
L.insert(val4, 3);
L.print();
cout << L.length() << endl;
L.reverse();
L.print();
cout << L.find(val1) << endl;
system("pause");
}