`
东边日出西边雨
  • 浏览: 262725 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

线性表的链式存储结构

 
阅读更多

    线性表在我看来就是用一根线把所有数据穿起来,形象吧,他具体的定义自己上网查吧,我是不喜欢背定义的,很难记住。

 

    线性表在内存中有两种存储方式,一种叫顺序存储,另一种叫链式存储,顺序存储说简单点就是在数组里存储,这种需要大量连续的空间,不太实用的。链式存储就不需要连续的空间,下一个结点在哪里都无所谓,反正当前结点中保存着下一个结点的地址,对吧。

 

    下面是自己写的简单的关于链表的程序,写的很简单,就当是做个备份了。

 

/* linklist.h */

#ifndef LINKLIST_H
#define LINKLIST_H

#include <iostream>
using namespace std;

typedef struct _Node {
	int data;
	struct _Node* next;
} Node, *Pnode;


class LinkList
{
private:
	Pnode head, tail;
	Pnode curEnumPos;
public:
	LinkList();
	~LinkList();
	void Debug();
	bool CreateList(); // 1
	void DestroyList(); // 2
	bool InsertNode(int); // 3
	void TraverseList(); // 4
	Pnode EnumList(); // 5

};

#endif
 
/* linklist.cpp */

#include "linklist.h"

LinkList::LinkList() {
	head = NULL;
	tail = NULL;
	curEnumPos = NULL;
}

LinkList::~LinkList() {
    if (head) {
        DestroyList();
    }
}

void LinkList::Debug() {
    cout<<"head is "<<head<<", tail is "<<tail<<", curEnumPos is "<<curEnumPos<<endl;
}

bool LinkList::CreateList() {

    if (head) {
        cout<<"alarm! link exist, not need to create"<<endl;
        return false;
    }

    Pnode p = new Node;

    if (p) {
        head = p;
        tail = p;
        return true;
    }

	return false;
}

void LinkList::DestroyList() {

    while(head != NULL) {
        Pnode t = head->next;
        delete head;
        head = t;
    }

    tail = NULL;
    curEnumPos = NULL;

	return true;
}

bool LinkList::InsertNode(int idata) {

    if (!head) {
        cout<<"error! linklist not exist"<<endl;
        return false;
    }

    Pnode inode = new Node;

    if (inode) {
        inode->data = idata;
        tail->next = inode;
        tail = inode;
        return true;
    }

    return false;

}

void LinkList::TraverseList() {

    if (!head) {
        cout<<"alarm! linklist not exist"<<endl;
        return;
    }

    Pnode t = head->next;

    while(t != NULL) {
        cout<<t->data<<" ";
        t = t->next;
    }
    cout<<endl;
}

Pnode LinkList::EnumList() {

    if (curEnumPos) {
        curEnumPos = curEnumPos->next;
    } else {
        curEnumPos = head->next;
    }

    return curEnumPos;
}

 

 

 

分享到:
评论

相关推荐

    关于线性表的顺序存储和链式存储结构的实验报告

    在数据结构实验报告中,线性表的存储结构被分为两大类:顺序存储结构和链式存储结构。 顺序存储结构(Sequential Storage Structure)是将线性表中的元素按顺序存储在一个连续的内存空间中。线性表的顺序存储结构...

    数据结构实验报告2线性表的链式存储结构.pdf

    本实验报告详细介绍了线性表的链式存储结构,通过编程实践深入理解了链表的逻辑结构、基本操作以及链表算法的实现过程。 线性表作为一种常见的数据结构,其特点是元素之间存在一对一的线性关系。线性表中数据元素...

    数据结构实验报告2线性表的链式存储结构.doc

    实验报告的主题是“线性表的链式存储结构”,它主要涵盖了线性表的基本概念、链式存储方式以及相关的操作,如初始化、插入、删除、查找等。线性表是一种基本的数据结构,它是由n(n&gt;=0)个相同类型元素构成的有限...

    线性表的顺序存储结构、链式存储结构上的基本操作

    在本主题中,我们将深入探讨线性表的两种主要存储结构:顺序存储结构和链式存储结构,以及在这两种结构上实现的基本操作。同时,我们还会涉及栈这种特殊类型的线性表及其顺序和链式存储结构。 一、线性表的顺序存储...

    线性表的链式存储结构.doc

    ### 线性表的链式存储结构 #### 一、概念理解 1. **线性链表**:一种常见的线性表存储方式,通过一组任意的存储单元存储线性表中的数据元素,数据元素之间的逻辑关系通过指针链接。 2. **单链表**:最简单的链表...

    数据结构之线性表的链式存储结构

    数据结构线性表的链式存储结构,使用c语言完成。线性表的链式存储结构的特点是用一组任意的存储单元存储线性表的数据元素。

    线性表的链式存储结构..

    实验二 线性表的链式存储结构 题目:设计并实现以下算法:给出用单链表存储多项式的结构,利用后接法生成多项式的单链表结构,实现两个多项式相加的运算,并就地逆置相加后的多项式链式。1. 用户可以根据自己的需求...

    线性表的链式存储结构c++模板类实现

    在计算机科学中,线性表的实现方式有多种,其中链式存储结构是一种常见且灵活的方式。链式存储结构在线性表中通过节点(node)连接,每个节点包含一个数据元素和指向下一个节点的指针。 在提供的C++代码中,实现了...

    线性表的链式存储结构设计.doc

    线性表的链式存储结构设计 线性表是计算机科学中的一种基本数据结构,链式存储结构是线性表的一种常见实现方式。链式存储结构的设计是线性表的基本操作的实现的基础。 实验一:设计算法求 A 和 B 的并集 C,使用...

    数据结构线性表的链式存储结构.pdf

    数据结构线性表的链式存储结构 线性表是一种基本的数据结构,链式存储结构是线性表的一种常见的存储结构。链式存储结构指的是将数据元素存储在一个链表中,每个数据元素对应一个结点,结点中包含数据元素和指向下一...

    数据结构_线性表的链式存储

    在本实验中,我们将深入理解并实践线性表的链式存储结构,这是一种非顺序存储方式,与数组不同,它通过指针链接元素,使得元素在内存中可以不连续存放。 链式存储结构的核心是链表,链表由一系列节点(或称为元素)...

    数据结构中线性表的链式存储

    在计算机内存中表示或存储线性表的方式主要有两种:顺序存储结构和链式存储结构。其中,链式存储结构是通过指针链接各个结点来表示数据元素之间的逻辑关系,每个结点包含数据域(用于存储实际的数据)和指针域(用于...

    线性表的链式存储结构.pdf

    线性表的链式存储结构.pdf

    线性表的链式存储结构.zip

    链式存储结构是实现线性表的一种方式,相较于顺序存储,它在处理动态变化的数据集时具有更大的灵活性。 链式存储结构不像数组那样需要连续的内存空间,每个元素(也称为节点)在内存中可以分散存放,每个节点除了...

Global site tag (gtag.js) - Google Analytics