OpenGL 4 Shading Language Cookbook, Second Edition
The OpenGL Shading Language (GLSL) is now a fundamental and critical part of programming
with OpenGL. It provides us with unprecedented flexibility and power by making the formerly
fixed-function graphics pipeline programmable. With GLSL, we can leverage the Graphics
Processing Unit (GPU) to implement advanced and sophisticated rendering techniques and
even do arbitrary computation. With GLSL 4.x, programmers can do more with the GPU than
ever before thanks to new shader stages such as tessellation shaders and compute shaders.
基于Xilinx XUPV2P平台(FPGA开发板)的MP3播放器设计
基于Xilinx XUPV2P平台(FPGA开发板)的MP3播放器设计
FPGA实现MP3播放器
本次项目是以Quartus II 9.1和NIOS II 9.1为平台,基于DE2开发板实现。项目具体流程首先通过SD卡将保存的歌曲写入DE2中,通过NIOS II控制,实现LCD,播放器,按键控制等功能的协同工作。
VS1003资料
VS1003 是由芬兰VLSI 公司出品的一款单芯片的MP3/WMA/MIDI 音频解码和ADPCM 编码芯片,其拥有一个高
性能低功耗的DSP 处理器核VS_DSP,5K 的指令RAM,0.5K 的数据RAM,串行的控制和数据输入接口,4 个通
用IO 口,一个UART 口;同时片内带有一个可变采样率的ADC、一个立体声DAC 以及音频耳机放大器。
B2C网络购物商城
《JAVA数据库开发》网络购物商城完整代码,系统主要分为前台和后台。前台包括产品的展示及会员购物等模块,后台是管理界面,主要包括商品信息、会员信息、订单信息和公告信息的常规设置。
链表逆置方法总结c语言编写
多种方法实现链表的逆置。
c语言编写,可以任意字符输入。
c语言编写的链表逆置的总结
三种不同的方法,挺不错的!
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N 100
typedef struct SList
{
char data[N]; //字符数组
struct SList *next; //定义链表头指针
}SList,*ListPointer;
/*typedef struct List
{
SList *head;
}List,* ListPointer;
*/
void initList(ListPointer &lp)
{
lp=(SList *)malloc(sizeof(SList));//初始化链表
lp->next=lp; //链表的头指针指向本身,实现链表循环
}
void output(ListPointer lp) // 自定义输出函数
{
SList *ep;
ep=lp;
while(ep->next!=lp) //判定条件 当指针重新指向头指针输出结束
{
ep=ep->next;
printf("%s ",ep->data);
}
}
void revert(ListPointer lp) // 链表的逆置
{
SList *p,*q;
p=lp;q=NULL;lp=NULL;
while(p)
{
q=p->next;
p->next=lp;
lp=p;
p=q;
}
/*方法二
SList *p,*q,*end;
p=lp->next;
q=p->next;
end=p;
while(q!=lp)
{
lp->next=q;
q=q->next;
lp->next->next=p;
p=lp->next;
}
end->next=lp;
*/
}
void add_char(char *p,ListPointer lp) //将输入的字符传递给链表
{
SList * ep;
ep=lp;
while(ep->next!=lp) //判定条件 当指针重新指向头指针输出结束
{
ep=ep->next;
}
ep->next=(SList *)malloc(sizeof(SList)); //开辟空间存储
strcpy(ep->next->data,p); //字符的传递
ep->next->next=lp;
}
void main()
{
ListPointer L;
char str[N];
initList(L);
printf("输入#以结束\n");//确定输入终止条件
while(1)
{
scanf("%s",str);
if(*str=='#') //判定条件
{
break;
}
add_char(str,L);
}
printf("初始序列为:");
output(L);
printf("\n");
revert(L);
printf("逆置后为:");
output(L);
printf("\n");
}