• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

c++链表

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
  • 什么是链表

链表是一种常见的重要的数据结构。它是动态进行储存分配的一种结构

  • 和数组的区别

数组存放数据时,必须事先定义数组长度,如果不知道具体长度,只能定义一个足够大的长度

链表则没有这种缺点,他能根据需要开辟内存单元

  • 结点

每个结点包括两个数据,用户实际的数据+下一个结点的地址

  • 最后一个元素

该元素不在指向其他元素,它的地址部分放NULL;

  • 静态链表

这个例子比较简单,所有结点都是在程序中定义的,不是临时开辟的,也不能用完后释放,这种链表成为静态连表

#include<stdio.h>
struct MyStruct
{
    int id;
    float score;
    MyStruct *next;
};
int main()
{
    struct MyStruct a, b, c, *head, *p;
    a.id = 111; a.score = 1.1;
    b.id = 222; b.score = 2.2;
    c.id = 333; c.score = 3.3;
    head = &a;
    a.next = &b;
    b.next = &c;
    c.next = NULL;
    p = head;
    while (p!=NULL)
    {
        printf("%d,%lf\n", p->id, p->score);
        p = p->next;
    }
}

  • 建立动态连表

所谓建立动态链表是指在程序运行当中从未到有地建立一个链表,即是一个个地开辟结点和输入各结点的数据,并建立起前后相连的关系

#include<iostream>//最简单的链表 
using namespace std;
struct stu
{
    int id;
    double score;
    stu *next;
};
int n=0;
stu * creat()//创建链表,输入数据返回头结点 
{
    stu *p1,*p2,*head;
    p1=p2=new stu();//很重要这块,考试之前一定打在打两遍 ,一个个建立结点,开辟空间
    head=NULL;
    cin>>p1->id>>p1->score;
    while(p1->id!=0)//五角星 
    {
        n++;
        if(n==1) head=p1;
        else p2->next=p1;
        p2=p1;
        p1=new stu();
        cin>>p1->id>>p1->score;
    }
        p2->next=NULL;
        return head;
}

void print(stu *head)//遍历链表 
{
    stu *p;
    p=head;
    while(p!=NULL)//是while不是if 
    {
        cout<<p->id<<p->score<<endl;
        p=p->next;
    }
}

int main()
{
    stu *p;
    p=creat();
    print(p);
}

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C++仿函数发布时间:2022-07-18
下一篇:
errorC2664:“CSource::CSource(TCHAR*,LPUNKNOWN,CLSID)”:不能将参数1从“LPCTSTR” ...发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap