c++学习-链表

静态链表:

#include<iostream>
#include<string>
using namespace std;

struct book{
    int num;
    float price;
    struct book *next;
};

int main()
{
    book x, y, z, *head, *p;
    x = {1,1.1f};
    y = { 2, 2.2f };
    z = { 3, 3.3f };

    head = &x;
    x.next = &y;
    y.next = &z;
    z.next = NULL;

    p = head;
    while (p!=NULL)
    {
        cout << p->num<<‘\t‘<<p->price << endl;
        p = p->next;
    }
    return 0;
}
时间: 2024-11-05 21:40:49

c++学习-链表的相关文章

算法学习 - 链表的游标实现~ C++

链表的游标实现,就是用另外一种方法来访问链表,模拟游标. 在我学习的理解中,就是创建一个节点数组,模拟内存的排列,然后从其中来申请内存和释放内存.但是实际的内存没有被释放~ 下面直接贴代码了: // // main.cpp // CursorList // // Created by Alps on 14-7-27. // Copyright (c) 2014年 chen. All rights reserved. // #include <iostream> #define CursorSp

经典算法学习——链表实现冒泡排序

我在之前一篇博客<经典算法学习--冒泡排序>中简单实现了使用数组进行冒泡排序.这篇博客我们将来实现使用链表如何排序,其实整体的思路是一样的.示例代码上传至: https://github.com/chenyufeng1991/BubbleSortLinkedList . 算法描述如下: (1)比较相邻的前后两个数据,如果前面数据大于后面的数据,就将两个数据交换: (2)这样对数组的第0个数据到N-1个数据进行一次遍历后,最大的一个数据就到了最后一个位置,也就是下标为N-1的位置(沉到了水底).

算法学习 - 链表之归并排序_O(1)空间_O(NlogN)时间_C++

归并排序 归并排序我在之前已经讲过了,并且给了在数组的数列的情况下的归并排序方法,而排序的时间复杂度为O(NlogN).想看的话链接如下: 归并排序,快排,冒泡排序 但是这个归并排序有一个缺点:需要O(n)的额外空间. 那么这个缺点在什么情况下会解决呢?就是数列是以链表形式存储的时候!就不需要额外的申请O(n)级别的空间. 那么我们为什么要用归并排序呢? 不是还有快排,堆排么?都是速度很快的排序.其实在链表中是不适合的!因为在快排的时候,查找标杆是O(1)级别的,但是在链表中只能得到head节点

经典算法学习——链表中倒数第k个节点

这是剑指Offer中非常经典的一道题,也是在面试笔试中高频出现.题目的详细描述如下:输入一个链表,输出该链表中倒数第k个节点.为了符合大多数人的习惯,从1开始计数,即链表的尾结点是倒数第一个节点. 本题有一个非常直观的解法,就是对链表扫描两遍,第一遍用来记录链表长度为n,第二次从链表头部走(n-k+1)步后,找到的那个节点就是倒数第k个节点.这种算法的问题就是需要扫描链表两遍,显得不是特别聪明. 其实多想想,这个算法模型和栈的形式非常像,我们只要从头开始扫描链表,把扫描到的每一个节点放入栈中,扫

Redis学习——链表实现

0. 前言 Redis 中的链表是以通用链表的形式实现的,而对于链表的用途来说,主要的功能就是增删改查,所以对于查找来说,redis其提供了一个match函数指针,用户负责实现其具体的匹配操作,从而实现通用化. 涉及的文件:adlist.h/adlist.c 1. 数据结构 typedef struct listNode { struct listNode *prev; struct listNode *next; void *value; //通用实现,可以存放任意类型的数据 } listNo

数据机构学习(链表)

链表: 以节点的方式来存储 每个节点包含data域,next域:指向下一个节点 各个节点不一定连续存储 分为带头节点和不带头节点(根据实际需求确定) head节点: 不存放具体数据,作用就是表示单链表的头 //单链表 public class SingleLinkedListDemo { public static void main(String[] args) { //创建几个节点 HeroNode hero1 = new HeroNode(1, "萧炎", "炎帝&qu

C语言学习--链表

#include "node.h" #include<stdio.h> #include<stdlib.h> //typedef struct _node { // int value; // struct _node *next; //} Node; int main(int agrc,char const *argv[]) { int number; Node * head = NULL; do { scanf("%d",&num

Linux内核中链表的学习

一.自己学习链表 数组的缺点:(1)数据类型一致:(2)数组的长度事先定好,不能灵活更改. 从而引入了链表来解决数组的这些缺点:(1)结构体解决多数据类型(2)链表的组合使得链表的长度可以灵活设置. 基本概念: 头结点: 这个节点是为了便于管理链表的节点,这个节点并不保存数据:虽然和其他节点一样,但是这个头结点是指向首节点的节点. 首节点: 第一个保存有效数据的节. 尾节点: 最后一个保存有效数据的节点 头指针: 头指针是指向头节点的指针. 单链表: 链表节点的数据结构定义: typedef s

&quot;数据结构翻转课堂&quot;答疑实录——链表

[说明] 本文是<数据结构>翻转课堂在线答疑的实录,由云班课的"答疑/讨论"功能中导出数据整理而成. [重要提示] 下面的内容,按时间从后往前的顺序提供,请直接到文章末尾,倒着看更顺畅. [知识点答疑] 赵鹤2015-09-21 16:38:25 头插法为什么首节点不是后来插入的节点 贺利坚2015-09-21 17:13:56 后加入的成头了. 赵鹤2015-09-21 17:26:04 可是首节点并没有数据域? 贺利坚2015-09-21 18:45:32 先区分下,首