基于链式存储结构的图书信息表的创建和输出

描述

定义一个包含图书信息(书号、书名、价格)的链表,读入相应的图书数据来完成图书信息表的创建,然后统计图书表中的图书个数,同时逐行输出每本图书的信息。

输入

输入n+1行,其中前n行是n本图书的信息(书号、书名、价格),每本图书信息占一行,书号、书名、价格用空格分隔,价格之后没有空格。最后第n+1行是输入结束标志:0 0 0(空格分隔的三个0)。其中书号和书名为字符串类型,价格为浮点数类型。

输出

总计n+1行,第1行是所创建的图书表中的图书个数,后n行是n本图书的信息(书号、书名、价格),每本图书信息占一行,书号、书名、价格用空格分隔。其中价格输出保留两位小数。

样例输入1 复制

9787302257646 Data-Structure 35.00
9787302164340 Operating-System 50.00
9787302219972 Software-Engineer 32.00
9787302203513 Database-Principles 36.00
9787810827430 Discrete-Mathematics 36.00
9787302257800 Data-Structure 62.00
9787811234923 Compiler-Principles 62.00
9787822234110 The-C-Programming-Language 38.00
0 0 0

样例输出1

8
9787302257646 Data-Structure 35.00
9787302164340 Operating-System 50.00
9787302219972 Software-Engineer 32.00
9787302203513 Database-Principles 36.00
9787810827430 Discrete-Mathematics 36.00
9787302257800 Data-Structure 62.00
9787811234923 Compiler-Principles 62.00
9787822234110 The-C-Programming-Language 38.00

#include<iostream>
#include<iomanip>
#include<cstring>
using namespace std;

struct Book
{
  char no[20];
  char name[50];
  float price;
};

typedef struct LNode
{
  Book data;//数据域
  struct LNode *next;//指针域

}*LinkList;//指向结构体的指针

void Create(LinkList &L)
{
  int i=0;
  L=new LNode;
  LinkList r,p;
  L->next=NULL;
  r=L;

while(1)
  {

    p=new LNode;
    p->next=NULL;

    cin>>p->data.no>>p->data.name>>p->data.price;

    if(strcmp(p->data.no,"0") ==0 && strcmp(p->data.name,"0") ==0 && p->data.price==0)
      break;

    r->next=p; //后插法创建链表
    r=p;
    i++;
  }
  cout<<i<<endl;

}

void Show(LinkList &L)
{
  LinkList p=L->next;

  while(p)
  {

    cout<<p->data.no<<" "<<p->data.name<<" ";
    cout<<fixed<<setprecision(2)<<p->data.price<<endl;//保存小数点后两位
    p=p->next;
  }
}

int main()
{
  LinkList L;

  Create(L);

  Show(L);

  return 0;
}

原文地址:https://www.cnblogs.com/lsy1112/p/9814031.html

时间: 2024-11-05 13:33:06

基于链式存储结构的图书信息表的创建和输出的相关文章

BJFU—214基于链式存储结构的图书信息表的创建和输出

#include<stdio.h>#include<stdlib.h>#define MAX 100 typedef struct bNode{ double no; char name[MAX]; double price; struct bNode * next;}bNode,*bLnode; bLnode createData(bLnode B);void traverse(bLnode B); int main(){ bLnode book; book = createDa

数据结构(四)——基于链式存储结构的线性表

数据结构(四)--基于链式存储结构的线性表 一.基于链式存储结构的线性表 1.链式存储的定义 链式存储为了表示数据元素与其直接后继元素间的逻辑关系,数据元素除了存储本身的信息外,还需要存储直接后继的信息.相连的数据元素之间在存储空间中不要求连续.链式存储的逻辑结构基于链式存储结构的线性表中,每个结点都包含数据域和指针域.数据域用于存储数据元素本身,指针域用于存储相邻结点的地址. 2.链表的定义 链表是基于链式存储结构的线性表链表的基本元素:头结点:链表中的辅助结点,包含指向第一个数据元素的指针数

第21课 线性表的链式存储结构

1. 链式存储的特点 (1)为了表示每个数据元素与其直接后继元素之间的逻辑关系: (2)数据元素除了存储本身的信息外,还需要存储其直接后继的信息. (3)避免了顺序存储结构线性表在插入和删除元素时需要移动大量元素的问题. 2. 链式存储逻辑结构 (1)数据域:存储数据元素本身 (2)指针域:存储相邻结点地址 3. 链表中的基本概念 (1)头结点:链表中的辅助结点,包含指向第一个数据元素的指针 (2)数据结点:链表中代表数据元素的结点,表现形式为:(数据元素,地址) (3)尾结点:链表中的最后一个

七、线性表的链式存储结构

1.问题引入 开发数组类模板的原因在于:在创建基于顺序存储结构的线性表时,发现这样的线性表可能被误用,因为重载了数组访问操作符,使用时跟数组类似,但是线性表和数组有很大的区别,所以激发了新的需求:开发数组类替换C++原生数组类,因为原生数组类也存在着很大缺陷,使用不方便. 基于顺序存储结构的线性表的另一个缺点:插入或删除元素时,涉及到大量数据元素的移动,对于效率的影响非常大 一个新的需求:在插入或删除元素时不需要大量移动数据元素的一种数据结构,即基于链式存储结构的线性表 2.链式结构的定义 为了

数据结构开发(5):线性表的链式存储结构

0.目录 1.线性表的链式存储结构 2.单链表的具体实现 3.顺序表和单链表的对比分析 4.小结 1.线性表的链式存储结构 顺序存储结构线性表的最大问题是: 插入和删除需要移动大量的元素!如何解决? 链式存储的定义: 为了表示每个数据元素与其直接后继元素之间的逻辑关系:数据元素除了存储本身的信息外,还需要存储其直接后继的信息. 链式存储逻辑结构: 基于链式存储结构的线性表中,每个结点都包含数据域和指针域 数据域:存储数据元素本身 指针域:存储相邻结点的地址 专业术语的统一: 顺序表 基于顺序存储

数据结构--线性表的链式存储结构

一 线性表的链式存储结构 A.链式存储的定义为了表示每个数据元素与直接后继元素之间的逻辑关系:数据元素除了存储本身的信息外,还需要存储其直接后继的信息图示B链式存储逻辑结构基于链式存储结构的线性表中,每个结点都包含数据域和指针域1.数据域:存储数据元素本身2.指针域:存储相邻结点的地址图示C链表中的基本概念1.头结点--链表中的辅助结点,包含指向第一个数据元素的指针(方便插入和删除)2.数据结点--链表中代表数据元素的结点,表现形式为:(数据元素,地址)3.尾节点--链表中的最后一个数据结点,包

线性表的链式存储——线性表的链式存储结构

1,基于顺序存储结构插入或删除元素时候会涉及大量元素移动,非常影响效率,本文着手解决这个问题: 2,链式存储结构为了弥补顺序存储结构效率上的问题: 3,链式存储的定义: 1,为了表示每个数据元素与其后继元素之间的逻辑关系,数据元素除了存储本身的信息外,还需要存储其直接后继的信息: 2,幼儿园排队:每个小朋友记住他前面的小朋友是谁,这样可以轻易的排队: 4,一定要分清 p->next 是左值还是右值,左值时表示节点内存储的位置,右值时表示节点对象: 5,链式存储逻辑结构: 1,基于链式存储结构的线

线性表的链式存储结构(链表)

链表:基于来链式存储的线性表 链式逻辑存储结构:基于链式存储结构的线性表中,每个节点都包含数据域和指针域(数据域:存储数据元素本身.指针域:存储相邻节点的地址.) 单链表:链表的每个节点只包含后一个元素的地址信息  循环链表:链表的最后一个元素的包含第一个元素的地址信息 双向链表:链表的节点中包含后驱和前驱的地址信息 链表基本概念: 头节点(辅助节点.不包含数据域,指针域指向第0个数据元素)+ 数据节点(数据域+地址域)+  尾节点(指针域为空或某一值,只有数据域) 单链表节点定义: struc

线性表的顺序存储结构和链式存储结构

前言 上一篇<栈>中提到了栈的顺序存储结构和链式存储结构,现在就对此做个简单的比较.因为栈是线性表的一种,顺序存储结构和链式存储结构实际是线性表的两种存储方式.而栈和队列都是两种重要的线性表结构.所以本文标题直接为线性表的顺序存储结构和链式存储结构. 开始比较两种不同的存储方式 一.顺序存储结构(也可称为顺序表) 顺序表的特点是逻辑上相邻的数据元素,物理存储位置也相邻,并且,顺序表的存储空间需要预先分配. 优点: (1)方法简单,各种高级语言中都有数组,容易实现. (2)不用为表示节点间的逻辑