美文网首页工作生活C++和数据结构
创建链表采用两种方法(结构体和类)

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

作者: 朱宏飞 | 来源:发表于2019-07-04 09:46 被阅读0次

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

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

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

//库函数头文件包含

#include <iostream>

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<iostream>

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<<first->data<<endl

    <<first-> link->data<<endl

    <<first->link->link->data<<endl;

}

int main(){

List a;

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

a.show();

cout<<"ok"<<endl;

return 0;

}

相关文章

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

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

  • 单向循环链表

    结构体 链表创建 插入 删除 打印

  • C语言结构体实现线性链表

    利用C语言的结构体和指针链表的相关知识,自己动手敲了下实现类似链表的功能。 创建方法 实现功能是接受用户输入链表长...

  • Swift Tour Learn (六) -- Swift 语法

    Swift语法基础(五)-- (类和结构体、属性、方法) 本章将会介绍 类和结构体对比结构体和枚举是值类型类是引用...

  • 数据结构与算法03-单向循环链表实现总结

    单向循环链表结构体设计 打印 尾插法创建链表 插入 删除 查索引

  • Swift5.1类和结构体

    9.类和结构体 结构体和类相比Swift中结构体和类的共同点:- 定义属性⽤于存储值- 定义方法⽤于提供功能- 定...

  • swift面向对象特性——类和结构体

    类和结构体的定义 类的语法格式为: 结构体的语法格式为: Swift中类和结构体的名称都以大写字母开头。类的方法和...

  • Swift初探(二)

    继Swift初探之后,我们来继续学习下Swift里的结构体,类,协议,闭包 结构体 两种调用结构体的方法1.调用结...

  • SwiftUI-结构体与类

    一.结构体与类 结构体和类都可以使用属性和方法构建复杂数据类型,但是什么时候使用结构体,什么时候使用类呢?结构体和...

  • Swift3.0类和结构体(Classes and Struct

    和其他语言不同的是,Swift不需要为自定义的类和结构体创建接口和实现文件。只需要创建单一文件用来创建类和结构体,...

网友评论

    本文标题:创建链表采用两种方法(结构体和类)

    本文链接:https://www.haomeiwen.com/subject/tpgkhctx.html