加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

【数据结构】单链表

发布时间:2020-12-15 05:54:22 所属栏目:安全 来源:网络整理
导读:学习数据结构基础,如有错误,请指正 /***数据结构:链表的模拟***/#ifndef __LINKLIST_H__#define __LINKLIST_H__typedef int ElemType;struct LinkNode{ElemType item;LinkNode *next;};class LinkList{private:LinkNode *listHead;public:LinkList();~Lin


学习数据结构基础,如有错误,请指正




/***
数据结构:链表的模拟
***/

#ifndef __LINKLIST_H__
#define __LINKLIST_H__

typedef int ElemType;

struct LinkNode{
	ElemType item;
	LinkNode *next;
};

class LinkList{
private:
	LinkNode *listHead;

public:
	LinkList();
	~LinkList();

	void initLinkList();
	void insertLinkListNodes(ElemType e);
	void deleteLinkListNode(ElemType e);
	void destroyLinkList();
	void print();
	
};

#endif //__LINKLIST_H__




#include "LinkList.h"
#include <iostream>
using namespace std;
//#include <cstdlib>

LinkList::LinkList()
{
	this->listHead = NULL;
	this->initLinkList();
}
LinkList::~LinkList()
{
	this->destroyLinkList();
}

void LinkList::initLinkList()
{
	LinkNode *p,*q = NULL;
	for (int i=0;i!=10;++i)
	{
		p = new LinkNode();
		int num = rand()%10;
		p->item = num;
		p->next = NULL;

		if (NULL == this->listHead)
		{
			this->listHead = p;
		} 
		else
		{
			q->next = p;
		}
		q = p;
		cout<<"init a node..."<<endl;
	}
}
void LinkList::insertLinkListNodes(ElemType e)
{
	// 对列头部插入
	LinkNode *p = new LinkNode ;
	p->item = e;
	p->next = this->listHead;
	this->listHead = p;
}
void LinkList::deleteLinkListNode(ElemType e)
{
	// delete first LinkNode whose item equite e;
	LinkNode *p,*q = NULL;

	for (p = this->listHead; p!=NULL;p=p->next)
	{
		if (p->item == e)
		{
			if (p == this->listHead)
			{
				this->listHead = this->listHead->next;
				delete p;
			} 
			else
			{
				q->next = p->next;
				delete p;
				cout<<"delete successfully."<<endl;
			}
			return;
		}
		q = p;
	}
}
void LinkList::destroyLinkList()
{
	LinkNode *p,*q = NULL;

	for (p = this->listHead; p!=NULL;p=p->next)
	{
		q = p->next;
		delete p;
	}
	this->listHead = NULL;
}

void LinkList::print()
{
	cout<<"link list items:"<<endl;
	LinkNode *p = NULL;
	for (p = this->listHead; p!=NULL;p=p->next)
	{
		cout<<p->item<<endl;
	}
}

int main()
{
	LinkList *list = new LinkList();
	list->print();
	list->insertLinkListNodes(3);
	list->print();
	list->deleteLinkListNode(2);
	list->print();

	getchar();
	return 0;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读