栈编程
⑴ 数据结构堆栈编程(类C)
里面有几处需要用到地址传递,你用的是值传递,修改的地方如下:
int InitStack(SqStack &S){
//构造空栈S
S.base=(int *)malloc(STACK_INIT_SIZE * sizeof(int));
if(!S.base) return 0; //存储分配失败
S.top=S.base;
S.stacksize=STACK_INIT_SIZE;
return 1;
}//InitStack
int Push(SqStack &S,char e){
//插入元素e为新的栈顶元素
if(S.top-S.base>=S.stacksize){//栈满,追加存储空间
S.base=(int *)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(int));
if(!S.base) return 0;
S.top=S.base+S.stacksize;
S.stacksize+=STACKINCREMENT;
}
*S.top++=e;
return 1;
}//Push
int Pop(SqStack &S,char &c){
//若栈不空,则删除S的栈顶元素,用e返回值,并返回1;否则返回0
if(S.top==S.base) return 0;
c=*--S.top;
return 1;
}//Pop
int StackEmpty(SqStack &S){
if(S.top!=S.base) return 0;
return 1;
}//StackEmpty
void Reverse(SqStack &S){
//判断输入字符串中&前与后部分是否为逆串,是则返回1;否则返回0
InitStack(S); char e; char c;
printf("input the string\n");
if(!StackEmpty(S)) printf("error\n");
while((e=getchar())!='&')
Push(S,e);
while((c=getchar())!='@'){
Pop(S,e);
if(e!=c) printf("error\n");
else printf("OK\n");
}
}//Reverse
不过你malloc之后没有free会造成内存泄露。。。
⑵ linux中,怎么看某个进程的PCB
下面是亚嵌教育嵌入式系统工程师培训课程大纲:
课程安排课程简介第一阶段
Linux操作和编程基础 主要介绍Linux的基本命令和基础编程知识,包括Linux的文件操作和目录操作命令,VI编辑器,GCC编译器,GDB调试器和Make项目管理工具等知识。第二阶段
嵌入式C语言编程基础 主要介绍在嵌入式开发编程中C语言的重要概念和编程技巧中的重点难点,以复习串讲和实例分析的形式,重点介绍包括函数与程序结构,指针、数组和链表,库函数的使用等知识。第三阶段
Linux上C强化编程训练 主要包括整数算法训练,递归和栈编程训练,位操作训练,指针训练,字符串训练和常用C库函数编程接口实践,强化学员对Linux下基本编程开发的理解和编码调试的能力。第四阶段
Linux环境高级编程及项目开发编程实践 主要包括系统编程(信号/系统调用/管道/FIFO/消息队列/共享内存等),文件I/O编程(文件描述符/文件读写接口/原子操作/阻塞与非阻塞IO等,多任务和多线程编程(进程标识/ 用户标识/fork与vfork/多线程概念/线程同步等),网络编程(网络基本概念/套接口编程/网络字节次序/Client/Server结构/UDP编程);掌握Linux下Socket编程的开发流程,熟悉网络编程的调用接口函数和相关数据结构,使学员初步具备在Linux上进行系统编程开发的能力。同时综合之前所学内容和编程技术,以小组为单位进行一个团队合作项目的开发,考核内容包括文件I/O编程,多线程编程,网络编程和项目文档编写。期中考试第五阶段
嵌入式处理器体系结构及编程实践 主要介绍ARM体系结构及其基本编程知识,包括指令分类,寻址方式、指令集、存储系统、异常中断处理、汇编语言以及C\C++和汇编语言的混合编程等知识。同时结合ARM嵌入式开发板硬件设计原理和基本硬件设计流程,分析各种外设的工作原理和驱动机制,并自己动手实践完成一个ARM开发板上的编程大作业。第六阶段
嵌入式Linux开发基础及高级应用 主要介绍嵌入式Linux开发应用程序的基本流程和知识,包括嵌入式Linux基本概念和开发流程、Bootloader工作原理、内核裁减配置和交叉编译、根文件系统制作、网络编程以及图形界面和数据库开发等知识。同时独立完成一个基于嵌入式Linux GUI的应用编程大作业。第七阶段
嵌入式 Linux驱动理论及驱动程序开发实践 主要介绍嵌入式Linux上驱动程序开发规范,包括设备驱动程序概念、字符设备驱动程序、块设备与网络设备、网卡驱动以及常用嵌入式设备驱动开发等知识。同时独立实现两种嵌入式设备驱动程序的编写,包括驱动模块的调试和加载以及完整的项目开发文档的编写。第八阶段
嵌入式Linux项目团队开发实践锻炼 主要包括设计并实现一个真实和完整的嵌入式项目的开发流程,涉及到数据采集、网络通讯、图形用户界面显示以及嵌入式数据库存储系统等多种嵌入式Linux编程技术。要求学员建立起团队开发和协同工作的企业项目开发模式的概念和流程,强化学员对编写项目概要设计文档和详细设计文档的理解,为就业前的职业技能和素质训练做好充分准备。
培养目标:
培训目标学习内容掌握程度掌握多种编程语言C 语言精通 ARM 汇编语言 熟悉 C++ 语言 熟悉 掌握 Linux 高级编程文件操作精通 进程/线程精通 掌握两种嵌入式实时操作系统Linux精通 uCLinux精通 掌握两种处理器体系结构ARM 体系结构精通 MIPS 体系结构精通 掌握ARM核处理器Samsung S3C4510精通 Samsung S3C2410精通 掌握一种 MIPS 核处理器MIPS Godson 龙芯 熟悉 MIPS Godson 龙芯 熟悉 掌握两种硬件设计工具Candence PCB 了解 Protel 了解掌握两种Linux下编辑软件VI精通 EMACS 了解掌握两种串口通讯工具超级终端 (Windows) 熟悉 MiniCOM (Linux) 熟悉 掌握三种 Flash 烧写工具Flash Programmer (GUI) 熟悉 JFlash 烧写软件及原理精通 SJF系列烧写软件及原理精通 掌握两种调试工具JTAG 在线调试器 熟悉 SkyEye 仿真调试工具 熟悉 掌握两种集成开发环境ARM ADS精通 K-Develop IDE 熟悉 掌握一种源代码版本管理工具CVS/SVN 熟悉 掌握嵌入式 Linux整体开发流程 熟悉 GNU 交叉编译器使用Cross-compiler-gcc/g++精通 Linux Makefile 组织结构精通 Bootloader 启动代码u-Boot精通 RedBoot 熟悉 内核编译配置参数设置精通 内核调试 熟悉 文件系统JFFS2 文件系统精通 NFS 文件系统精通 ROMFS 文件系统精通 EXT2 文件系统 熟悉 YAFF 文件系统 了解设备驱动程序Linux设备驱动精通 串口/GPIO精通 网卡设备驱动精通 USB设备驱动 熟悉 嵌入式图形系统MiniGUI精通 QT/Embedded 熟悉 MicroWIN 了解嵌入式数据库系统SQLLite精通 嵌入式应用程序开发网络通讯应用开发精通 数据库存储应用开发 熟悉 多媒体应用开发 熟悉 图形用户界面开发精通 Shell 编程技巧 熟悉 【说明】
精通:表明对于所学内容和工具的原理进行过深入分析,了解相关内容实现的具体技术细节,并掌握了相关工具的高级使用技巧。
熟悉:表明对于所学内容和工具能够融会贯通,掌握相关内容的基本概念,并能够熟练使用相关工具的常用技巧。
了解:表明对于所学内容和工具一般了解,能够区别相关内容在概念上的异同,并能够初步使用相关工具
⑶ android嵌入式开发大纲
课程安排 课程简介
第一阶段
Linux 操作和编程基础
预备营阶段主要讲解 Linux 的基本命令和linux培训基础编程知识,包括Linux的文件操作和目录操作命令,VI编辑器,GCC编译器,GDB调试器和 Make 项目管理工具等知识。
该阶段学生可以通过学习Linux下编程方法,完成实现一个简单的游戏编程,例如五子棋、俄罗斯方块、贪吃蛇等。此项任务完成后,学员的编码量可以达到1000行,能够进行基本程序开发。
第二阶段
嵌入式环境开发核心技能
初级营阶段主要讲解在嵌入式开发编程中C语言的重要概念和编程技巧中的重点难点,以复习串讲和实例分析的形式,重点介绍包括函数与程序结构,指针、数组和链表,库函数的使用等知识。
该阶段学员会进行大量的编码练习,主要包括整数算法训练,递归和栈编程训练,位操作训练,指针训练,字符串训练,链表和二叉树训练、掌握常用C库
函数编程接口实践,函数指针、动态内存分配,程序预处理、链接原理,ELF文件格式,标准I/O库等核心技能,强化学员对嵌入式开发环境下基本编程开发的
理解和编码调试的能力。
该阶段学员在完成上述编码练习任务后,将独立完成“快译通”宝典项目开发,实现一个类“金山词霸”字典功能的实用程序开发。该项目完成后,学员的
编码量可以达到5000-8000行,具备初级程序员开发能力,能够胜任企业一般开发编码类的任务要求。
第三阶段
嵌入式Linux环境高级
编程和项目开发实践
中级营阶段主要讲解包括系统编程(信号/系统调用/管道/FIFO/消息队列/共享内存等),文件I
/O编程(文件描述符/文件读写接口/原子操作/阻塞与非阻塞IO等),多任务和多线程编程(进程标识/用户标识/fork与vfork/多线程概念/线
程同步等),网络编程(网络基本概念/套接口编程/网络字节次序/ Client/Server 结构/ UDP
编程);掌握Linux下Socket编程的开发流程,熟悉网络编程的调用接口函数和相关数据结构,使学员初步具备在Linux上进行系统编程开发的能
力。同时还会讲解搭建嵌入式 Linux
开发环境,包括嵌入式Linux基本概念和开发流程、内核裁减配置和交叉编译、根文件系统制作、网络编程等知识。
该阶段学员将综合之前所学内容和编程技术,以小组为单位进行一个团队合作项目的开发,完成一个嵌入式产品“数码相框”的设计和实现,涉及技术内容
包括文件I/O编程,多线程编程,网络编程和项目文档编写。该项目完成后,学员的编码量可以达到10000-15000行,具备中级程序员开发能力,能够
胜任企业项目开发和产品开发类的任务要求。
第四阶段
嵌入式Linux开发方向 Android开发方向
(2选1)
高级营课程将按照学员兴趣和特长,选择2个专业选修方向进行深入学习,包括:
·嵌入式ARM硬件开发(公共部分)
·嵌入式Linux开发方向
·Android手机开发方向
该阶段完成后,学员的编码量可以达到和超过20000行,具备独立开发项目,完成嵌入式产品软件设计和实现的能力。
以下为这2个方向的详细描述:
嵌入式ARM硬件开发
(公共部分)
该部分学习的内容包括ARM体系结构、指令集、裸板开发等等,该阶段要求学员完成从0开始的Bootloader项目:
·Bootloader项目(从0启动硬件,加载Linux内核)
该项目主要涉及
ARM体系结构及其基本编程知识,包括指令分类,寻址方式、指令集、存储系统、异常中断处理、ARM汇编语言以及C和汇编语言的混合编程,ARM开发板启
动代码的框架分析等知识。同时要求结合ARM嵌入式开发板硬件设计原理图分析各种外设的工作原理和驱动机制,并自己动手实践完成一个ARM开发板上的
Bootloader编程大作业。
嵌入式Linux开发方向
—上层应用开发
该部分主要针对上层应用开发,学习的内容包括C++面向对象编程基础、QT图形界面开发、网页脚本语言、SQLite数据库等知识。
该阶段要求学员设计并实现1个真实完整的嵌入式项目开发流程,该方向的项目选题可以从以下项目案例中任选:
·广告机项目(交互式多媒体网络系统)
·飞鸽传书项目(局域网文件共享系统)
·QQ聊天室项目(多客户登录即时通讯系统)
·数据采集和远程控制项目(Web远程控制系统)
以上项目开发,涉及到文件I/O编程、数据库编程、网络通讯、以及图形界面开发等多种嵌入式Linux编程技术,要求学员建立起团队开发和协同工
作的企业项目开发模式的概念和流程,强化学员对编写项目概要设计文档和详细设计文档的理解,为就业的职业技能和素质训练做好充分准备。
嵌入式Linux开发方向
—底层驱动开发
该部分主要针对底层驱动开发, Linux设备驱动程序开发规范、USB协议规范、LCD液晶屏/TS触摸屏/网卡/AC97声卡等硬件驱动开发知识。
该阶段要求学员实现2-5个真实的硬件设备驱动,该方向的项目选题可以从以下项目案例中任选:
·CS8900网卡驱动
·USB驱动
·LCD液晶屏驱动
·TS触摸屏驱动
·AC97声卡驱动
·串口驱动
上述项目主要涉及嵌入式 Linux
上驱动程序开发规范,包括设备驱动程序概念、字符设备驱动程序、块设备与网络设备、网卡驱动以及常用嵌入式设备驱动开发等知识。要求学员独立实现至少2种
嵌入式设备驱动程序的编写,包括驱动模块的调试和加载以及完整的项目开发文档的编写。
专业选修方向二
Android开发方向
该方向主要为了满足人才合作单位对Android高端技术人才的需求而设,基于对市场最前沿高端平板电脑产品方案的研发实践,使学员系统全面地掌握多核Android平台上的开发技术,满足企业对有实际开发经验的Android高端工程师的需求。
该阶段要求学员学习Android系统框架、Android系统移植优化和Android应用开发等知识,完成2个商业级android项目。该方向的项目选题可以从以下项目案例中任选:
·mp3/mp4播放器(实现各种媒体格式的播放功能)
·云点阅读器(能够浏览epub、txt等文档)
·点菜系统(酒店点菜系统, 实现菜单浏览,下单)
·游戏引擎(开发完整的android平台游戏引擎)
上述项目均采用最新Android高端硬件平台:NVIDIA Tegra2双核1GHz,3D、flash、高清硬件加速,基于ARM Cortex-A9内核,支持重力传感,WiFi无线网络,3G上网,HDMI高清接口。
⑷ 易嵌教育南京分中心的Android系统开发班
Android系统开发课程体系 课程目标 本课程采用理论教学与项目实训相结合的方式,系统地介绍了全世界最流行和普及的移动平台android系统以及基于android系统的应用开发。培训内容强化了java编程思想、设计模式,java数据库,和web 编程,在此基础上深入了解和掌握android系统的源码结构,android四大组件的使用,android ndk,android bsp的移植和开发。满足企业对3G通信系统的android软件开发工程师需求。
课程目标包括:
u 精通liunx操作系统使用;
u 精通liunx下C和C++高级编程知识,熟练编写C和C++程序;
u 精通嵌入式liunx高级应用开发和网络接口开发;
u 精通java语言开发和设计;
u 精通android平台下sdk编程;
u 熟悉android平台下ndk编程;
u 掌握android framework编程;
u 掌握android bsp的移植和开发 培训证书 ◆ARM 公司全球统一培训认证证书 ◆ Linux系统开发工程师认证证书
◆ Linux应用开发工程师认证证书 ◆3G应用开发工程师认证证书。 教学环境 当地校园或者办公楼处教学,结合项目团队进行实训,提高整体的项目实战能力和就业竞争力,为学员打造一个实实在在的工作氛围提高学习热情,尽早融入企业项目氛围。本课程教学采用理论授课和上机实践相结合,结合企业项目需求实战的方式进行教学。每名学员配置一套嵌入式硬件开发板和笔记本电脑。 授课特点 ◆培训中采用案例教学方式,强化学生的动手能力和操作能力;
◆每一阶段课程结束后通过项目实训的方式,使学生综合理解和掌握所学的知识;
◆要求当天实训习题必须当天完成,建议能够晚上加班项目实训,分阶段考试,并考试情况进行辅导和强化;
◆提供学员全面职业素养教育和面试指导及职业规划。 课程进度安排 ●就业提高和基础强化 第一阶段嵌入式开发基础(40课时) 阶段目标 从零基础开始,让您能熟练地安装和使用linux。熟练地进行linux下各种编译和编辑工具。熟练地搭建linux交叉编译环境。 课程内容 ◆ Linux基础知识和系统安装
◆ 交叉环境的搭建;开发板的初步认识和环境建立;
◆ Linux常用命令,文本编辑器vi,简单shell脚本编程;
◆ Linux开发环境基础:Gcc,Gdb,Make和Makefile;
◆ 软件版本管理器Svn;
◆ 嵌入式软件开发环境搭建与使用,开发板平台内核系统的烧写; 第二阶段嵌入式C语言编程(120课时) 课程内容 ◆复习C语言基础知识,强化指针和数组概念,学习数据结构和一些基本算法;
◆通过大量编程实例重点讲解C语言的高级编程知识,包括函数与程序结构、指针、数组;
◆重点讲解数据结构的基础内容,熟练地应用链表、队列、栈等编程;
◆深入介绍掌握常用C库函数编程接口实践,函数指针、动态内存分配,程序预处理、链接原理,标准I/O库等核心技能。
◆深入地进行递归和栈编程训练,位操作训练,指针训练,字符串训练,链表和二叉树训练。
◆深入介绍C程序在编译时与运行时的基本原理,及其程序的内存分布。
◆强化学员高质量的C语言编程规范和嵌入式编程要点,对嵌入式开发环境下基本编程开发的理解和编码调试的能力。 项目实训 该阶段学员在完成上述的大量编码练习任务后,将独立完成一个“网优管理系统”,“学生管理系统”,“车站管理系统”等实际项目开发的程序开发。该项目完成后,学员的编码量可以达到5000-8000行,能够胜任企业一般开发编码类的任务要求。 第三阶段linux系统程序设计(80课时) 阶段内容 ◆ 学习Linux操作系统基础和特点,操作系统中进程与调度,操作系统中的并发的理论。
◆ 系统编程(信号/系统调用/管道/FIFO/消息队列/共享内存等),文件I/O编程(文件描述符/文件读写接口/原子操作/阻塞与非阻塞IO等),
◆ 多任务和多线程编程(进程标识/用户标识/fork与vfork/多线程概念/线程同步等)
◆ 网络编程(网络基本概念/套接口编程/网络字节次序/ Client/Server 结构/ UDP 编程);掌握Linux下Socket编程的开发流程,熟悉网络编程的调用接口函数和相关数据结构,使学员初步具备在Linux上进行系统编程开发的能力。
◆ 深度地熟悉Linux系统接口及调用,熟练地进行GDB高级调试,静态/动态库创建和调用。。
◆ 深度地熟悉网络分层模型。实现基本的TCP/IP的编程。 项目实训 网络通信终端项目训练;提高操作系统理论和编程的核心点,深入了解Linux系统调用功能,开发Linux环境下多任务编程,掌握网络socket接口调用的方法,开发终端程序,并熟练使用开发工具进行调试。 第四阶段Java语言高级特性(80课时) 课程内容 ◆ Eclipse开发工具的使用;
◆ Java基本数据类型与表达式,Linux下面Java编译,Linux下面Makefile和ant详解,抽象,封装,继承,多态,类与对象,对象初始化和回收,方法的控制流程,异常处理,方法的重载,数组,类的组织与继承机制,继承的实现,构造方法的重载与继承,接口的概念与应用,最后讲述多线程和网络编程,多线程的基本概念,线程的使用方法,线程的同步,Java网络编程基础,使用URL访问WWW资源和基于Socket的客户和服务器编程.;
◆ 设计模式的基础概念 项目实训 使用java语言设计一个小游戏,如五子棋或俄罗斯方块 ● 能力提高和技术提升 第五阶段android sdk程序设计(80课时) 课程内容 ◆android sdk开发环境的搭建
◆android下activity控件的使用;
◆android下intent的使用;
◆android下content provider的使用;
◆android下用户界面的设计和androidmanifest的解析
◆android下通过SQLite访问电话薄 第六阶段android高级程序设计(80课时) 课程内容 ◆ android网络编程
◆android多媒体编程
◆android图形编程和游戏编程基础
◆android传感器,电话,短信,GPS等接口编程 实战项目 1 Java实训阶段游戏移植至android上
2 Android的平台下简易多功能播放器实现
3 其余商业性的app开发 第七阶段android framework开发(40课时) 阶段内容 ◆ JNI和android ndk编程
◆android IPC机制介绍
◆android power management
◆android电话功能简介
◆android HAL层介绍 项目实训 第八阶段android bsp开发(80课时) 课程内容 ◆ 掌握Linux的三类设备的驱动程序的基本结构,掌握用户空间与内核空间的数据传输,内核中同步、互斥、阻塞、睡眠机制;熟练地开发阻塞/非阻塞型字符驱动设备的开发。
◆ 理解并掌握1inux内核中断子系统的实现原理,掌握linux中断处理程序编写方法;掌握内核延时机制及内存管理机制。
◆ 了解Linux块设备,MTD设备驱动的特点与框架,具备MTD Nand Flash驱动程序开发的能力;
◆ 深入理解Linux网络驱动程序中有关套接字(socket)、套接字缓冲区(sk_buff)等概念,了解网络驱动程序的数据交换过程网络设备驱动程序开发及实例;
◆ 深入学习嵌入式Linux显示驱动程序framebuffer的开发方法,理解嵌入式Linux图形驱动程序实现机制,完成针对各种LCD硬件驱动的定制;
◆学习TouchScreen、KeyBoard驱动编写过程;熟悉对驱动程序编程流程和测试。 ● 项目实训及就业测评 第九阶段:实训项目(120课时) 阶段目标 着重综合地进行学习工程项目开发流程,其中包括项目需求、项目设计、程序编码、程序调试与测试、版本发布。让学生提前体验并参与整个项目开发流程。通过以团队方式分解项目,协作开发、各学员扮演不同角色并以不同的角色进行。 实训内容 ◆学习工程项目开发流程:项目需求、项目设计、程序编码、程序调试与测试、版本发布
◆以团队方式分解项目,协作开发、各学员扮演不同角色; 第十阶段: 毕业测评及就业指导 毕业测评及就业指导 ◆由技术专家对学员进行项目开发答辩;
◆简历优化提炼;
◆模拟面试训练、职业前引导 Android课程结构示意图