使用C++创建链表

C++创建链表的思路和C语言一样只是实现的方式不同

C++创建链表的思路http://blog.csdn.net/u010105970/article/details/24345739

程序代码:

#include <iostream>
#include <cstdlib>

using namespace std;

class Node//结点结果
{
public:
    void Create_list();//创建链表
    void Traverse_list();//遍历链表

private:
    int val;//数据域
    Node *pNext;//指针域
    Node *pHead;//头结点
};

typedef struct Node NODE;
typedef struct Node* PNODE;

/*
NODE相当于struct Node
PNODE 相当于 struct Node*
*/

//创建链表
void Node::Create_list()
{
    //创建一个头结点
    pHead =  new NODE[sizeof(NODE)];

    if(NULL == pHead)
    {
        cout<<"动态内存分配失败,程序终止!"<<endl;

        exit(0);
    }

    PNODE pTail = pHead;//创建一个指向头结点的指针
    pTail->pNext = NULL;//初始化指针的指针域为NULL

    int len;//用于保存链表中结点的个数

    cout<<"请输入你需要创建的结点的个数:";
    cin>>len;

    for(int i=1; i<=len; i++)
    {
        int num;//保存每个结点的值

        cout<<"请输入第"<<i<<"个结点的值:";
        cin>>num;

        //创建一个保存数据的新结点
        PNODE pNew = new NODE[sizeof(NODE)];

        if(NULL == pNew)
        {
            cout<<"动态内存分配失败,程序终止!"<<endl;

            exit(0);
        }

        pNew->val = num;//初始化结点的数据域
        pTail->pNext = pNew;//将pNew挂在老结点的后面
        pTail = pNew;//将指针pTail移到pNew上
        pTail->pNext = NULL;//清空指针域
    }
}

//遍历链表
void Node::Traverse_list()
{
    PNODE p = pHead->pNext;

    while(NULL != p)
    {
        cout<<p->val<<" ";

        p = p->pNext;
    }

    cout<<endl;
}

void main()
{
    NODE pHead;
    //创建链表
    pHead.Create_list();

    //遍历链表
    pHead.Traverse_list();

    system("pause");
}

执行结果:

使用C++创建链表

时间: 2024-10-14 13:42:12

使用C++创建链表的相关文章

js创建链表

首先要明确,我们为什么要创建链表呢?数组的大小是固定的,从数组的起点或中间插入或移除的成本很高,因为需要移动元素.尽管JS的Array类方法可以做这些,但是情况也是这样.链表存储有序的元素集合,但不同于数组,链表中的元素在内存中并不是连续放置的.每个元素由一个存储元素本身和指向下一个元素的指针组成. 相对于传统的数组,链表的一个好处在于,添加或移除元素的时候不需要移动其他元素.然而,链表需要使用指针,因此实现链表时需要额外注意.数组的另一个细节是可以直接访问任何位置的任何元素,而要想访问链表中间

创建链表LinkedList

链表是由若干个节点的对象组成的一种数据结构分为单链表和双链表. 单链表:每个节点含有一个数据和下一个节点对象的引用. 双链表:每个节点含有一个数据并含有上一个节点对象的引用和下一个节点对象的引用. 创建链表 使用Java.util包中的LinkedList类可以创建一个链表对象 例如 LinkedList mylist=new LinkedList();//创建一个空双链表 可以使用add方法向链表依次增加节点 例如 mylist.add("加入的数据"); mylist可以使用方法p

创建链表的同时自动完成结点数据排序

/* 创建链表时自动完成链表上结点按某一关键字排序 最简单的方法是在创建链表时用插入结点的方式完成链表的建立 /* C++代码 */ #include <iostream> using namespace std; struct node //结点结构 { int data ; node * next; }; int main() { node * CreateList( ); //建立链表函数声明 void PrintList( node *); //输出链表中结点信息函数声明 node *

c++的引用和c的指针之创建链表,二叉树的烦恼和区别

/* **代码功能:创建一个令人头疼的不算头疼的链表,然后把特定的数据删除. *这次的主题不是在代码上,主要是关于创建链表时候的传参问题,嘿嘿,不相信你没遇到过 */#include "stdafx.h"#include<stdio.h>#include<stdlib.h>//要用到分配空间和释放空间//定义一个链表结构typedef struct link{ int value; struct link *next;}*LINK,linkInstance; /

递归控制-创建链表

0.目录 1.递归控制 2.Java代码实现 2.1 链表结点的实现 2.2 创建链表函数的实现 2.3 测试用例 1.递归控制 递归书写方法: 严格定义递归函数作用,包括参数,返回值,Side-effect 先一般,后特殊 每次调用 必须 缩小问题规模 每次问题规模缩小程度必须为 1 2.Java代码实现 2.1 链表结点的实现 Node有两个成员: 一个是value,希望用户创建后就不要修改了: 还有一个是next,创建时默认指向null. public class Node { priva

自己创建链表类,实现几个基本操作

/////List 创建 添加 删除#include <iostream>#include <string>#include <stack>using namespace std;class Node{public: int Data; Node*Node_next; Node():Data(0),Node_next(NULL){}}; class list{ Node*head;public: list(){head=NULL;} void insertlist(in

大话数据结构——线性表-链式存储之头插法创建链表

1 #include<iostream> 2 3 #include<time.h> 4 #include <stdlib.h> 5 6 using namespace std; 7 8 #define OK 1 9 #define TRUE 1 10 #define FALSE 0 11 #define ERROR 0 12 13 typedef int status;//返回的状态值 14 typedef int elemtype;//节点里数据的类型 15 16 /

Java 创建链表,增删改查

项目结构: Node.java: package linkedList; public class Node { int data; Node next; public Node(int data) { this.data = data; this.next = null; } } LinkedList.java: package linkedList; public class LinkedList { private Node first; //指向第一个节点(默认为null) privat

创建二叉树、创建链表等

方法一: 1 #include <iostream>//创建二叉树,要用二级指针 2 3 using namespace std; 4 5 typedef struct TreeNode 6 { 7 char data; 8 struct TreeNode *left; 9 struct TreeNode *right; 10 }BiTree; 11 12 void creatBitree(BiTree **T) 13 { 14 char ch; 15 cin >> ch; 16