首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

线性表的链式储存结构

2012-12-28 
线性表的链式存储结构??? 线性表在我看来就是用一根线把所有数据穿起来,形象吧,他具体的定义自己上网查吧,

线性表的链式存储结构

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

?

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

?

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

?

/* 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(); // 1void DestroyList(); // 2bool InsertNode(int); // 3void TraverseList(); // 4Pnode 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;}
?

?

?

热点排行