Õ»µÄCʵÏÖ(stack)
rows="2" cols="20" id="ctl00_ctl00_cphContent_cphDoc_EntryEditor1_richTextEditor" class="mceEditor" style="height:450px;width:100%;">
Õ»ÊÇÊý¾Ý½á¹¹ÖÐ×î»ù´¡Ò²ÊÇ×î¾µäµÄÊý¾Ý½á¹¹£¬ÎÞÂÛÔÚÓ¦Óû¹ÊDzÙ×÷ϵͳÖоù¿ÉÒÔ¿´µ½ÆäÉíÓ°¡£Õ»ÊÇÒ»ÖÖÌØÊâµÄ
ÏßÐÔ±í£¬¼´ÏÞÖÆÔÚ±íµÄÒ»¶Ë½øÐвåÈ롢ɾ³ýÔËË㡣ͨ³£²åÈ롢ɾ³ýµÄÒ»¶Ë³ÆÎªÕ»¶¥£¬ÁíÒ»¶Ë³ÆÎªÕ»µ×£¬µ±Õ»ÖÐû
ÓÐÊý¾Ýʱ³ÆÎª¿ÕÕ»¡£
Õ»ÖÐÊý¾ÝµÄ²åÈëºÍɾ³ýÖ»ÔÚÕ»¶¥½øÐУ¬ËùÒÔÕ»ÖеÄÊý¾Ý×ÜÊǺó½øÏȳö(LIFO)¡£
Õ»ÉÏ»ù±¾µÄÔËËãÓÐÎåÖÖ£º
* SETNULL(s) ÖÃÕ»sΪ¿ÕÕ»¡£
* EMPTY(s) ÅжÏÕ»sÊÇ·ñΪ¿Õ¡£
* PUSH(s,x) ÍùÕ»sѹÈëÊý¾Ýx¡£
* POP(s) ÈôÕ»s²»Îª¿Õ£¬Ôòµ¯³öÕ»¶¥Êý¾Ý¡£
* TOP(s) ÈôÕ»s²»Îª¿Õ£¬È¡Õ»¶¥Êý¾Ý¡£
ÏÂÃæ£¬¸ø³öÕ»µÄ×î»ù±¾µÄʵÏÖ´úÂë:
#include <assert.h>
#define STACK_SIZE (1 << 6)
static stack_t stack[STACK_SIZE];
static int top = -1;
static int stack_full(void)
{
return (top == STACK_SIZE - 1);
}
static int stack_empty(void)
{
return (top == -1);
}
void stack_push(stack_t val)
{
assert(!stack_full());
stack[++top] = val;
}
stack_t stack_pop(void)
{
assert(!stack_empty());
--top;
return stack[top + 1];
}
stack_t stack_top(void)
{
assert(!stack_empty());
return stack[top];
}
´ÓÉÏÃæµÄʵÏÖ´úÂë¿ÉÒÔ¿´³ö£¬ÊµÏÖÕ»µÄ»ù±¾²Ù×÷µÄ´úÂëÊǷdz£¼òµ¥µÄ£¬²»¹ý¶þÈýÊ®ÐеĴúÂëÁ¿¡£Èç¹ûÔÚʵ¼ÊµÄ´ú
Â뿪·¢ÖУ¬¸ù¾ÝÓ¦ÓõÄÌØ¶¨Êý¾ÝÀàÐÍʵÏÖÉÏÊö¼¸¸ö²Ù×÷½Ó¿ÚÒ²ÊǺÜÈÝÒ׵쬵«´æÔÚ¼¸¸öÃ÷ÏÔµÄȱÏÝ:
* ´úÂë²»¾ß±¸¸´ÓÃÐÔ¡£
* ²ÉÓþ²Ì¬Êý×é´æ´¢£¬Õ»¿Õ¼äÐèÔÚ±àÒëǰȷ¶¨¡£
* ²»Ö§³Ö´æ´¢¶àÖÖÊý¾ÝÀàÐÍ£¬ÐèÒªÐÞ¸Ästack_t¶¨Òå¡£
Ϊ´Ë£¬ÎÒÃÇÖØÐÂʵÏÖÁËÈçϵÄÒ»Ì׽ṹ£¬À´Âú×ãÉÏÃæµÄÕâЩ¸´ÓÃÐÔÌØÕ÷ÐèÇ󣬴úÂëÈçÏÂ:
#include <stdlib.h>
#include <string.h>
#include <assert.h>
struct _stack {
int top;
size_t len;
size_t size;
char *base;
};
typedef unsigned int hdl;
typedef struct _stack stack;
hdl stack_create(size_t size, size_t len)
{
stack *vp = (stack*)malloc(sizeof(stack));
if (vp == NULL) {
return 0;
}
assert(size > 0 && len > 0);
vp->base = (char*)malloc(size *
Ïà¹ØÎĵµ£º
×ÔÓɵĸèÒ¥
¡¡¡¡±¾ÊéÊÇ×ÔÓÉÈí¼þ´ÔÊéµÄÒ»²¿·Ö£¬Ò²ÊÇÒ»Ê××ÔÓɵĸèÒ¥¡£
¡¡¡¡±¾ÊéÖвûÊöµÄGNU C¿â£¬¶¨ÒåÁËËùÓÐÔÚISO C±ê×¼Ëù¹æ¶¨µÄ£¬ÒÔ¼°POSIX±ê×¼¡¢ÆäËüÏà¹Ø±ê×¼ºÍUNIXϵͳËùÅÉÉúµÄ±ê×¼Öж¨ÒåµÄËùÓк¯Êý£¬ÎªGNU²Ù×÷ϵͳËùÖ§³Ö¡£
C³ÌÐòÉè¼ÆÓïÑÔÌṩÖîÈçÊäÈë/Êä³ö¡ ......
¡¾checkpass.c¡¿
#include <stdio.h>
#include <string.h>
int checkpass(void){
int x;
char a[9];
x = 0;
fprintf(stderr,"a at %p and\nx at %p\n", (void *)a, (void *)&x);
printf("Enter a short word: ");
&nbs ......
LuaÓëC½»»¥ÈëÃÅ
¼ò½é
LuaÓëC/C++½áºÏÊǺܽôÃܵÄ, LuaÓëC++½»»¥Êǽ¨Á¢ÔÚLuaÓëCµÄ»ù´¡ÉϵÄ, Ëù
ÒÔżÏÈ´ÓLuaÓëC½²Æð.
ÕýÈçµÚÒ»½²Ëù˵, ÔËÐÐLua³ÌÐò»òÕß˵µ÷ÓÃLuaÖ÷ÒªÓÐÁ½ÖÖ·½Ê½:
* ͨ¹ýÃüÁîÐÐÖ´ÐÐ"Lua"ÃüÁî
* ͨ¹ýLuaµÄC¿â
ËäÈ»´ËǰżÃÇÒ»Ö±ÓõÚÒ»ÖÖ·½Ê½, µ«Å¼Òª¸æËßÄã, ͨ¹ýLuaµÄC¿âÖ´ÐвÅÊÇÓÎÏ·ÖÐ
³£Óõķ½Ê½. ......
Ç°Ãæ½éÉܵĸ÷ÖÖÔËËã¶¼ÊÇÒÔ×Ö½Ú×÷Ϊ×î»ù±¾Î»½øÐеġ£ µ«Ôںܶàϵͳ³ÌÐòÖг£ÒªÇóÔÚλ(bit)Ò»¼¶½øÐÐÔËËã»ò´¦Àí¡££ÃÓïÑÔÌṩÁËλÔËËãµÄ¹¦ÄÜ£¬ÕâʹµÃ£ÃÓïÑÔÒ²ÄÜÏñ»ã±àÓïÑÔÒ»ÑùÓÃÀ´±àдϵͳ³ÌÐò¡£
12.1 λÔËËã·û£ÃÓïÑÔÌṩÁËÁùÖÖλÔËËã·û£º
& °´ ......
CµÄÓÉÀ´
CÓïÑÔÊÇÓÉUNIXµÄÑÐÖÆÕßDennis RitchieºÍKen ThompsonÓÚ1970ÄêÑÐÖÆ³öµÄBÓïÑԵĻù´¡ÉÏ·¢Õ¹ºÍÍêÉÆÆðÀ´µÄ.
CµÄÌØµã
CÓïÑÔÊÇÒ»ÖÖÃæÏò¹ý³ÌµÄÓïÑÔ,ͬʱ¾ßÓлã±àÓïÑԺ͸߼¶ÓïÑÔµÄÓŵã.CÓïÑÔ¿ÉÒԹ㷺ӦÓÃÓÚ²»Í¬µÄ²Ù×÷ϵͳ,ÈçUNIX,DOS,Windows¼°LinuxµÈ.
CµÄ·¢Õ¹
1973Äê,CÓïÑÔµÚÒ»´Î±»ÓÃÀ´±àд²Ù×÷ϵͳ(Unix)µÄÄÚºË.Denn ......