两种单链表(没有头节点 和 带有头节点)的创建 及 基本操作(增删改查)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_40990854/article/details/82657859

带有头节点:

#include "pch.h"
#include "pch.h"
#include "SingleList.h"
#include <iostream>
using namespace std;

int main(void)
{
	SingleList list;
	list.create(10);
	list.print();
	cout << "创建链表完毕!" << endl;
	list.Delete(2);
	list.print();
	cout << "删除某个节点完毕!" << endl;
	list.insert(2, 100);
	list.print();
	cout << "插入某个节点完毕!" << endl;
	cout << "find:" << list.find(3) << endl;
	cout << "插入某位置节点完毕!" << endl;
	return 0;
}

typedef
struct Node {
	int data;
	struct Node * next;
}Node;

class SingleList
{
	Node head;//Node * head 我之前是这样写的,没有理解有头节点的意思,有头节点的我事先就为 head要了一块内存,而不是定义为一个指针
	int length;
public:
	SingleList();
	void create(int len);
	void insert(int index,int data);
	void Delete(int index);
	int find(int index);
	int size();
	void print();
	~SingleList();
};

#include "pch.h"
#include "SingleList.h"


SingleList::SingleList()
{
	head.next = NULL;
	head.data = 0;
	length = 0;
}

void SingleList::create(int len)
{
	for (int i = 0; i < len; i++)
	{
		insert(i, i);
	}
}

void SingleList::insert(int index,int data)
{
	Node * p_head = &head;
	while (index --)
	{
		p_head = p_head->next;
	}
	Node * nodeTemp = new Node;
	nodeTemp->data = data;
	nodeTemp->next = p_head->next;
	p_head->next = nodeTemp;
	length++;
}

void SingleList::Delete(int index)
{
	Node * p_head = &head;
	index++;
	while (index --)
	{
		p_head = p_head->next;
	}
	Node * tmpPtr = p_head->next;
	p_head->next = p_head->next->next;
	delete tmpPtr;
	length--;
}

int SingleList::find(int index)
{
	if (index < 0 || index > length) {
		return 0;
	}
	Node * tmpPtr = head.next;
	while (index --)
	{
		tmpPtr = tmpPtr->next;
	}
	return tmpPtr->data;
}

int SingleList::size()
{
	return length;
}

void SingleList::print()
{
	Node * p_head = head.next;
	while (p_head->next != NULL)
	{
		cout << p_head->data << " ";
		p_head = p_head->next;
	}
}

SingleList::~SingleList()
{
}

猜你喜欢

转载自blog.csdn.net/qq_40990854/article/details/82657859