• 大小: 4KB
    文件类型: .cpp
    金币: 1
    下载: 0 次
    发布日期: 2021-05-28
  • 语言: C/C++
  • 标签: C++  链表  

资源简介

实现链表的创建、插入、删除、清空、查询、反转(循环和递归两种)等

资源截图

代码片段和文件信息

// ListTest.cpp : 定义控制台应用程序的入口点。
//

#include “stdafx.h“
#include 
#include 

using namespace std;

template
class Nobe {
public:
T data;
Nobe* next;
};

template
class List {

public:
Nobe* head;
~List() { head = NULL; }
List() { /* head = new Nobe;head->next = NULL;*/}
void CreatHaed(T aData);
void CreatFoot(T aData);
void insert(T aData int PData);
void remove(int PData);
void Reverse();
Nobe* reverse(Nobe* head);
void clear();
void output()const;
int ListLen()const { return len; }
Nobe* GetData(int PData);
Nobe* Gethead()const { return head; }
Nobe* find(T aData);

int len = 0;
};

template
void List::CreatHaed(T aData) {
Nobe* newP = new Nobe;
newP->data = aData;
if(head!=NULL){
newP->next = head;
head = newP;
len++;
}
else {
head = newP;
newP->next = NULL;
len++;
}
}

template
void List::CreatFoot(T aData) {
Nobe* newP = new Nobe;
newP->data = aData;
if (head != NULL) {
Nobe* p = head;
while (NULL != p->next) {
p = p->next;
}
p -> next = newP;
newP->next = NULL;
len++;
}
else {
head = newP;
newP->next = NULL;
len++;
}
}

template
void List::insert(T aData int PData) {
Nobe*  newP = new Nobe;
if (PData < 0){
cout << “请输入大于0的数“ << endl;
}
else if (PData == 0) {
newP->data = aData;
if(head!=NULL){
newP->next = head;
head = newP;
len++;
}
else {
head = newP;
newP->next = NULL;
len++;
}
}
else if (PData > 0 && PData <= len) {
if (head != NULL) {
newP->data = aData;
Nobe* p = head;
for (int i = 0;i < PData - 1;i++) {
p = p->next;
}
newP->next = p->next;
p->next = newP;
}

}

}

template
Nobe* List::GetData(int PData) {
if(PData>=0&&PData Nobe* p = head;
for (int i = PData;i > 0;i--) {

评论

共有 条评论