c++链表

链表是一种物理存储单元上不连续的存储结构,数组元素之间通过链表中的指针进行链接。链表是由一系列的结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。

每个结点包含两部分,一个是存储数据的数据域,另一个是存储下一结点地址的指针域。

链表允许在任意位置插入或删除结点,但是不支持随机访问结点,只能从头结点逐个访问每个结点。一般在一些需要快速插入或删除,而不太关心或者不需要随机访问的情况下使用。

#include <iostream>
using namespace std;
//用结构体类型来表示一个结点
typedef struct node
{
    //数据域
    char name[20];
    int age;
    //指针域
    struct node* next;
}student;

//typedef是重命名,下面申明结点时不用写struct node,而用student代替
//创建链表
student * createlist(int n)//n表示结点个数
{
    student* head = new student;//头结点,动态,存在堆上
    //一般头结点不存储数据
    //student head;//存在栈上,用于函数内部,所以一般情况下,结点都是动态生成
    student* pre = head;//pre用来记录上一个结点
    //利用for 循环构建结点
    for (int i = 0; i < n; i++)
    {
        student* p = new student;
        cin >> p->name >> p->age;
        pre->next = p;
        pre = p;
        p->next = NULL;
    }
    return head;
}
void display(student* head)
{
    student* p = head->next;//p为第一个结点
    while (p!=NULL)
    {
        cout << p->name << " " << p->age<<endl;
        p = p->next;
    }
}
int main()
{
    int n = 5;
    student *head=createlist(n);
    display(head);
    return 0;
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值