【第21期】观点:人工智能到底用 GPU?还是用 FPGA?

C语言 链表

原创 2013年12月05日 17:02:51
// LinkTable.cpp : Defines the entry point for the console application.
// 程序运行,用户输入学生数,根据用户输入学生数,动态创建链表,提示输入学生
// 姓名、成绩,最后输出所有学生数据以及平均成绩
#include "stdafx.h"
#include
#include
struct Student{
 char name[30];
 int  score;
 struct Student *p_next;
};
int main(int argc, char* argv[])
{
 int i,n;
 char c,t;
 struct Student* pHead = NULL;
 struct Student* pLast = NULL; 
 i = 0;
 while(1)
 {
  printf("输入学生信息,请按 y ,其它键退出...\n"); 
  c = getchar(); 
  if(!(c == 'y' || c == 'Y')) // 输入不是 y 或 Y ,退出
   break;
  struct Student* pCurr = (struct Student*)malloc(sizeof(struct Student));
  printf("请输入学生 %d 姓名:",i+1);
  scanf("%s",pCurr->name);
  printf("请输入学生%d成绩:",i+1);
  scanf("%d",&pCurr->score);
  pCurr->p_next = NULL; // 很重要,用于判断是否为最后一个节点 
  if(i == 0)
  {
   pHead = pCurr;
   pLast = pCurr;
  }
  else
  {
   pLast->p_next = pCurr;
   pLast = pCurr;
  }
  i ++;
  // 清空键盘缓冲区
  while((t = getchar()) != '\n' && t != EOF);
 }
 
 // 链表遍历(访问每个节点一次)
 pLast = pHead;
 i = 1;
 n = 0;
 int sum = 0;
 while(pLast)
 {
  n++;
  printf("学生 %d 姓名:%s 成绩:%d\n",i,pLast->name,pLast->score);
  sum += pLast->score;
  pLast = pLast->p_next; // 指针指向下一个节点  
  i++;
 }
 double avg = sum/(double)n;
 printf("平均成绩 = %lf\n",avg);
 // 释放内存 
 while(pHead)
 {
  pLast = pHead->p_next;
  free(pHead);
  pHead = pLast;
 }
 return 0;
}


版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

C语言的那些小秘密之链表(二)

除了个别天才程序员外,没有人一开始就能写出让人惊叹的代码,都是从模仿开始的!不要相信你身边的人说他能很轻松的自己编写出让人惊叹的代码而不用任何的参考资料,因为我相信在你我的身边没有这样的天才程序员,所...

c语言单链表题目

对C语言来说,使用指针是创建数据结构所必不可少的工具, 例如需要定义一个单向链表,往往使用以下的方式: typedef struct Node { struct Node* pNext; void* pData; } NodeStruct, *pNodeStruct; typedef struct SingleLinkedList { pNodeStruct pHead; pNodeStruct pTail; } SingleLinkedListStruct, *pSingleLin

C语言链表简单讲解

参加蓝桥杯的时候为了学好数据结构开始接触C语言数据结构,简单来说,C语言数据结构也是最简单的,最容易懂的,所以有学弟问我链表是什么,我这里用几个简单的例子还说,链表的思想启蒙还是chensiqi老师给...

由链表初始化看C语言的二级指针

先来看C语言创建链表、插入节点和遍历链表的一段代码: #include <stdio.h> #include <stdlib.h> typedef int ElemType; typedef struct Node{ ElemType elem; struct Node *next; }Node, *LinkedList; //

链表的C语言实现(含动态内存分配)

链表的C语言实现(含动态内存分配)上 链表的C语言实现之动态内存分配 一、为什么用动态内存分配  但我们未学习链表的时候,如果要存储数量比较多的同类型或同结构的数据的时候,总是使用一个数组。比如说我们...

嵌入式C语言那点事(三)Linux中霸道的双向链表源码与应用

C语言作为面向过程的语言,想写出灵活的结构与封装需要很高技巧。 但由于C语言的高效,几乎所有操作系统和面向对象语言的最底层实现都使用了C语言。即,使用C完成面向对象的封装。 这次通过整理与仿写Linux的双向链表让我体会到了一些C语言封装的核心技巧。 这个双向链表的巧妙之处在于1)利用宏将“函数”入参扩展出了“结构类型”; 2)利用纯地址偏移获取结构体指针; 下面是具体实现:链表的实现由于是宏定义,都在libList.h中。 测试程序testList.c与testList.h。 </p

使用C语言实现“泛型”链表

原文地址:http://blog.csdn.net/ljianhui/article/details/18748657 看到这个标题,你可能非常惊讶,C语言也能实现泛型链表?我们知道链表是我们非常常...

Generic double circular linked list - 通用双向循环链表C语言实现

Generic double circular linked list - 通用双向循环链表C语言实现 cheungmine 双向循环链表是计算机数据结构里面最基础

由链表初始化看C语言的二级指针

先来看C语言创建链表、插入节点和遍历链表的一段代码: #include #include typedef int ElemType; typedef struct Node{ Elem...

重学数据结构001——链表基本操作与一元多项式相加(C语言)

        大一的时候我们专业开了一门C语言限选课,老师觉得指针太难,所以不讲指针。大三的时候学数据结构,考虑到数据结构比较难,老师不要求代码实现。就这样,两门比较重要的课就这样浑浑噩噩的过去了。后来学Java,算是学的还行,也独立的做过一些导师的项目。只是在找工作的时候,才发现笔试题、面试题到处都是C、C++和数据结构的题。多多少少也因此碰了不少壁。不管怎么样,自己还年轻,以前没学好,现在学也不晚。         这一系
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)