创建链表采用两种方法(结构体和类)

加油其实并不难,熟悉语法,然后按照流程图来进行操作问题就是不大。问题就出现在编程语言不熟悉。新的一天加油!

-----------------------------------------------------------------------------------------------------------------------------------




-----------------------------------------------------------------------------------------------------------------------------------

//库函数头文件包含

#include

using namespace std;

//函数状态码定义

#define TRUE        1

#define FALSE      0

#define OK          1

#define ERROR      0

#define INFEASIBLE -1

#define OVERFLOW  -2

typedef int  Status;

typedef int  ElemType; //假设线性表中的元素均为整型

typedef struct LNode  //定义节点的结构

{

    ElemType data;

    struct LNode *next;

}LNode,*LinkList;    //这个节点的别名

/*

LNode是给这个结构起的一个名字,可以用LNode去定义变量,

在这里已经和int/char这样的关键字一样了。

*LinkList是指向这个结构的一个指针,也可以去定义变量,

定义出来的是指向这个结构的指针变量。

*/

Status ListCreate_L(LinkList &L,int n)  //创建链表采用尾插法,较为方便

{

    LNode *rearPtr,*curPtr;  //一个尾指针,一个指向新节点的指针

    //L=(LNode*)malloc(sizeof (LNode));

    L=new LNode; //新建一个节点L

    if(!L)exit(OVERFLOW);

    L->next=NULL;              //先建立一个带头结点的单链表

    rearPtr=L;  //初始时头结点为尾节点,rearPtr指向尾巴节点

    for (int i=1;i<=n;i++){  //每次循环都开辟一个新节点,并把新节点拼到尾节点后

        curPtr=new LNode;//生成新结点

        if(!curPtr)exit(OVERFLOW);

        cin>>curPtr->data;//输入元素值

        curPtr->next=NULL;  //最后一个节点的next赋空

        rearPtr->next=curPtr;

        rearPtr=curPtr;

    }

    return OK;

}

int main()

{

    LinkList L;

    int n;

    int x,k; 

    cin>>n;  //输入链表中元素个数

    if(ListCreate_L(L,n)!= OK) {

          cout<<"表创建失败!!!\n";

          return -1;

    }


  return 0;

}

-----------------------------------------------------------------------------------------------------------------------------------

Class版

#include

using namespace std;

class List;//友元类的前置声明

class Node//节点

{

friend class List;//声明一个友元类 ,然后就可以对私有的进行操作

private:

int data;  //节点中数据

Node* link; //指向下一个节点的指针

};

class List//链表

{

public:

void test();

void show();

private:

Node* first;

};

void List::test(){

Node *f=new Node();

f->data=44;

f->link=0;

first=f;

f=new Node();

f->data=72;

f->link=0;

first->link=f;

f=new Node();

f->data=210;

f->link=0;

first->link->link=f;


}

void List::show(){    //::作用域所属关系属于List这个类下的show方法

cout<data<

    < link->data<

    <link->link->data<

}

int main(){

List a;

a.test(); //创建了三个节点

a.show();

cout<<"ok"<

return 0;

}

你可能感兴趣的:(创建链表采用两种方法(结构体和类))