C语言:创建动态单向链表,创建完成后,输出每一个节点的数据信息。
//
// 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语言:创建动态单向链表,创建完成后,输出每一个节点的数据信息。的更多相关文章
- 单向链表在O(1)时间内删除一个节点
说删链表节点,第一时间想到就是遍历整个链表,找到删除节点的前驱,改变节点指向,删除节点,但是,这样删除单链表的某一节点,时间复杂度就是O(n),不符合要求: 时间复杂度是O(n)的做法就不说了,看看O ...
- C语言基础 - 实现单向链表
回归C基础 实现一个单向链表,并有逆序功能 (大学数据结构经常是这么入门的) //定义单链表结构体 typedef struct Node{ int value; struct Node *next; ...
- C 单向链表的创建、插入及删除
链表是一种常见的基础数据结构,结构体指针在这里得到了充分的利用.链表可以动态的进行存储分配,也就是说,链表是一个功能极为强大的数组,他可以在节点中定义多种数据类型,还可以根据需要随意增添,删除,插入节 ...
- 复习下C 链表操作(单向链表)
Object-C 作为C 的包装语言(运行时.消息机制).如果不熟悉C 的话实在玩得太肤浅. 随便深入oc 内部都会接触到C. runtime .GCD.Block.消息机制... 所有强大的功能无不 ...
- 数据结构——求单向链表的倒数第K个节点
首先,对于链表来说,我们不能像数组一样直接访问,所以我们想到要求倒数第K个节点首先要知道最后一个节点. 然后从最后一个节点往前数K个. 最后得到想要的值. 但是这是不对的,为什么呢?因为题目给出的是单 ...
- java笔试之从单向链表中删除指定值的节点
输入一个单向链表和一个节点的值,从单向链表中删除等于该值的节点,删除后如果链表中无节点则返回空指针. 链表的值不能重复 构造过程,例如 1 -> 2 3 -> 2 5 -> 1 4 ...
- python中的单向链表实现
引子 数据结构指的是是数据的组织的方式.从单个数据到一维结构(线性表),二维结构(树),三维结构(图),都是组织数据的不同方式. 为什么需要链表? 顺序表的构建需要预先知道数据大小来申请连续的存储空间 ...
- Java 单向链表学习
Java 单向链表学习 链表等同于动态的数组:可以不同设定固定的空间,根据需要的内容动态的改变链表的占用空间和动态的数组同一形式:链表的使用可以更加便于操作. 链表的基本结构包括:链表工具类和节点类, ...
- Reverse Linked List II 单向链表逆序(部分逆序)
0 问题描述 原题点击这里. 将单向链表第m个位置到第n个位置倒序连接.例如, 原链表:1->2->3->4->5, m=2, n =4 新链表:1->4->3-& ...
随机推荐
- Linux查看使用端口的进程
netstat –apn | grep 8080 lsof -i:8080
- Linux下的文件与目录权限
一.用户(User).群组(Group)和其他人(Others) linux是多用户多任务的操作系统,同一时刻可能会有多个用户登录系统,考虑到文件的安全性等问题,所以Linux下的文件都属于一个特定的 ...
- Request常用方法(转)
原文地址:http://www.lihuai.net/program/python/1617.html Python Requests库:HTTP for Humans 时间: 2014/12/30 ...
- 华三IRF的配置
https://blog.csdn.net/VictoryKingLIU/article/details/79255901 拓扑结构 1 配置成员编号(重启) 2 配置成员优先级(大的主设备) 3 配 ...
- 《Android源码设计模式》--单例模式
No1: 懒汉单例模式优缺点分析 public class Singleton{ private static Singleton instance; private Singleton(){} pu ...
- [ 原创 ]学习笔记-做一个Android音乐播放器是遇到的一些困难
最近再做一个安卓的音乐播放器,是实验室里学长派的任务,我是在eclipse上进行开发的,由于没有android的基础,所以做起来困难重重. 首先是布局上的困难 1.layout里的控件属性不熟悉 2. ...
- 【转载】HTTP/FTP客户端开发库:libwww、libcurl、libfetch
网页抓取和ftp访问是目前很常见的一个应用需要,无论是搜索引擎的爬虫,分析程序,资源获取程序,WebService等等都是需 要的,自己开发抓取库当然是最好了,不过开发需要时间和周期,使用现有的Ope ...
- ASP.NET 构建高性能网站 第5篇
利用分析工具分析加载页面信息 站点的优化说到底还是站点每一个页面的优化,即使得站点的页面更快的呈现在用户的眼前.所以在此之前,我们首先来看看一个web页面的组成部分: 1. Html文件:在ASP.N ...
- HDU 4730 We Love MOE Girls (2013成都网络赛,签到水题)
We Love MOE Girls Time Limit: 1000/500 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- C#多线程编程之:lock使用注意事项
1.避免锁定public类型对象. 如果实例可以被公共访问,将出现lock(this)问题. 如有一个类MyClass,该类有一个Method方法通过lock(this)来实现互斥: 1 public ...