C++链表

链表是由连在一起的小容器组成。

容器一般由结构体或者类创建。

类: cop

class Link{  
    public:  
        int elem;//数据域  
        Link *next;//指针域  
};  

结构体:
struct Link{  
    int elem;  
    Link *next;  
}; 


简单说明使用链表存储数据和输出:

代码如下:

#include<iostream>  
using namespace std;   
class Link{  
    public:  
        int elem;  
        Link *next;  
        Link(){  
            next = NULL;  
        }  
};  
int main(){  
    int n;  
    cout<<"请输入线性表的数目"<<endl;  
    cin >> n;  
    Link *node = NULL;    
    Link *Head = NULL;  
    Link *pre =NULL;    
    for ( int i=0;i<n;i++ ){  
        node = new Link;  
        cin >> node->elem; //输入数据并存入数据域  
        //添加一步:指针指向下一结点的地址  
        //这里就需要一个Head指针来判断当前位置是否为第一个结点   
        if ( Head==NULL )  
            Head = node;  //若第一个结点Head还未被设置,将node的地址保存在Head中  
        else  
            pre->next = node;  //pre指针指向node,pre是前一个结点的位置,node是当前结点的位置   
        pre = node; //node变为pre,pre的地址变为这个node的地址,继续向前存储数据  
        if ( i==n )  
            pre->next = NULL;   
    }  
    //输出存储的数据  
    pre = Head;//输出前先把当前位置指向第一个节点的地址  
    cout << endl;  
    for ( int i=1; pre!=NULL; i++){  
        //p->NULL时,则链表到头,为什么i=1呢  
        cout <<"elem_"<< pre->elem << endl;  
          
        pre = pre-> next;   
    }   
    //释放空间,不能直接删除指针pre,否则会丢失接下来的结点的地址   
    Link*d;  
    pre = Head;  
    while (pre!=NULL){  
        d = pre;  
        pre  =pre->next ;  
        delete d;  
    }   
    return 0;  
}  


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值