//

//  main.c

//  dynamic_link_list

//

//  Created by ma c on 15/8/5.

//  Copyright (c) 2015. All rights reserved.

//  要求:写一个函数建立有3名学生数据的动态单向链表,并输出链表中每个结点的所有内容。

/*

建立动态链表的思想:

1、开辟一个新结点,并使p1,p2指向它;

2、读入一个学生数据给p1所指的结点;

3、head = NULL,n = 0;

4、判断读入的p1->num是否为0。

如果p1->num!=0,n = n+1;此时n==1?

如果n==1,head=p1(p1所指的结点作为第一个结点)

如果n!=1,p2->next=p1(把p1所指的结点连接到表尾)

p2=p1;(p2移到表尾)

再开辟一个新结点,使p1指向它;

读入一个学生数据给p1所指接点;

表尾结点的指针变量置NULL。

如果p1->num==0,链表结束,退出程序。

输出链表的思想:

1、p=head,使p指向第一个结点

2、判断p指向的是不是尾节点?

如果不是,输出p所指向的结点,p指向下一个结点;

如果是,链表结束,退出程序。

*/

#include <stdio.h>

#include<stdlib.h>

#define LEN sizeof(Student)

typedef struct student

{

int num;

float socre;

struct student *next;

}Student;

int n;     //定义一个全局变量

Student *createlist(void)

{

Student *p1,*p2,*head;

int n = 0;

//开辟一个新单元

p1 = p2 = (Student*)malloc(LEN);

//输入第一个学生的学号和成绩

scanf("%d,%f",&p1->num,&p1->socre);

head = NULL;

while(p1->num!=0)

{

n = n+1;

if(n==1)

{

head = p1;

}

else

{

p2->next = p1;

}

p2 = p1;

p1 = (Student *)malloc(LEN);

scanf("%d,%f",&p1->num,&p1->socre);

}

p2->next = NULL;

return head;

}

void printlink(Student *pt)

{

while(pt!=NULL)

{

printf("\nnum:%d\nscore:%5.1f\n",pt->num,pt->socre);//输出每个结点的成员值

pt = pt->next;

}

}

int main(int argc, const char * argv[])

{

Student *pt;

pt = createlist();//函数返回链表的第一个结点的地址

printlink(pt);

return 0;

}

C语言:创建动态单向链表,创建完成后,输出每一个节点的数据信息。的更多相关文章

  1. 单向链表在O(1)时间内删除一个节点

    说删链表节点,第一时间想到就是遍历整个链表,找到删除节点的前驱,改变节点指向,删除节点,但是,这样删除单链表的某一节点,时间复杂度就是O(n),不符合要求: 时间复杂度是O(n)的做法就不说了,看看O ...

  2. C语言基础 - 实现单向链表

    回归C基础 实现一个单向链表,并有逆序功能 (大学数据结构经常是这么入门的) //定义单链表结构体 typedef struct Node{ int value; struct Node *next; ...

  3. C 单向链表的创建、插入及删除

    链表是一种常见的基础数据结构,结构体指针在这里得到了充分的利用.链表可以动态的进行存储分配,也就是说,链表是一个功能极为强大的数组,他可以在节点中定义多种数据类型,还可以根据需要随意增添,删除,插入节 ...

  4. 复习下C 链表操作(单向链表)

    Object-C 作为C 的包装语言(运行时.消息机制).如果不熟悉C 的话实在玩得太肤浅. 随便深入oc 内部都会接触到C. runtime .GCD.Block.消息机制... 所有强大的功能无不 ...

  5. 数据结构——求单向链表的倒数第K个节点

    首先,对于链表来说,我们不能像数组一样直接访问,所以我们想到要求倒数第K个节点首先要知道最后一个节点. 然后从最后一个节点往前数K个. 最后得到想要的值. 但是这是不对的,为什么呢?因为题目给出的是单 ...

  6. java笔试之从单向链表中删除指定值的节点

    输入一个单向链表和一个节点的值,从单向链表中删除等于该值的节点,删除后如果链表中无节点则返回空指针. 链表的值不能重复 构造过程,例如 1 -> 2 3 -> 2 5 -> 1 4  ...

  7. python中的单向链表实现

    引子 数据结构指的是是数据的组织的方式.从单个数据到一维结构(线性表),二维结构(树),三维结构(图),都是组织数据的不同方式. 为什么需要链表? 顺序表的构建需要预先知道数据大小来申请连续的存储空间 ...

  8. Java 单向链表学习

    Java 单向链表学习 链表等同于动态的数组:可以不同设定固定的空间,根据需要的内容动态的改变链表的占用空间和动态的数组同一形式:链表的使用可以更加便于操作. 链表的基本结构包括:链表工具类和节点类, ...

  9. Reverse Linked List II 单向链表逆序(部分逆序)

    0 问题描述 原题点击这里. 将单向链表第m个位置到第n个位置倒序连接.例如, 原链表:1->2->3->4->5, m=2, n =4 新链表:1->4->3-& ...

随机推荐

  1. tomcat中请求参数中文中乱码问题

    在server.xml中配置如下: <Connector connectionTimeout="20000" port="8080" protocol=& ...

  2. Kylin启动时错误:Failed to find metadata store by url: kylin_metadata@hbase 解决办法

    一.问题背景 安装kylin后使用命令 $ kylin.sh start 后出现Failed to find metadata store by url: kylin_metadata@hbase的错 ...

  3. 【知了堂学习笔记】java 底层容易忽略的知识点

    1. java中的关键字 提到关键字,最主要的就是不能用关键字作为标识符,值得注意的有以下几点. ①其中goto与const在java中没有定义,但是也是关键字.这个基本用不到,但是应该有个认知. ② ...

  4. Java时间间隔问题在Android中的使用

    转载请注明出处:http://www.cnblogs.com/cnwutianhao/p/6606720.html 假设我们在做项目的时候,获取到了一段音频,也知道音频长度,那么我们想对音频做一些处理 ...

  5. Linux教程 - 管道和重定向

      管道和重定向! 保持数据流动 介绍   在前两节中,我们看了一些可以为我们操作数据的过滤器.在本节中,我们将看到我们如何将它们结合在一起来执行更强大的数据操作. 本节涉及一些阅读.即使这些机制及其 ...

  6. 【堆优化Dijkstra】BZOJ4152- [AMPPZ2014]The Captain

    [题目大意] 给定平面上的n个点,定义(x1,y1)到(x2,y2)的费用为min(|x1-x2|,|y1-y2|),求从1号点走到n号点的最小费用. [思路] 按照某维坐标排序,相邻两个点在这一维度 ...

  7. BZOJ 3876: [Ahoi2014]支线剧情 带下界的费用流

    3876: [Ahoi2014]支线剧情 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=3876 Description [故事背景] 宅 ...

  8. Codeforces Round #358 (Div. 2) C. Alyona and the Tree 水题

    C. Alyona and the Tree 题目连接: http://www.codeforces.com/contest/682/problem/C Description Alyona deci ...

  9. Codeforces Round #248 (Div. 1) B. Nanami's Digital Board 暴力 前缀和

    B. Nanami's Digital Board 题目连接: http://www.codeforces.com/contest/434/problem/B Description Nanami i ...

  10. BZOJ 1059: [ZJOI2007]矩阵游戏 匈牙利算法

    1059: [ZJOI2007]矩阵游戏 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2351  Solved: 1156 题目连接 http:// ...