棧是一種只能在一端進行插入或者刪除操作的線性表(說明棧還是線性表結構,只是操作受限而已)。其中允許進行插入或者刪除操作的一端稱為棧頂。棧的插入和刪除一般叫入棧和出棧。棧的順序儲存結構叫做順序棧,棧的鏈式儲存結構叫做鏈棧。
#define maxsize 100
typedef struct sqstacksqstack;
st.top=-1;
st.top=maxsize-1;
++st.top;
st.data[st.top]=x;
x=st.data[st.top];
--st.top;
#include#include#define maxsize 100
typedef struct sqstacksqstack;
//初始化順序棧
void initsqstack(sqstack *st)
//判斷棧是否為空
int sqstackempty(sqstack *st)
//進棧
int push(sqstack *st,int x)
st->data[++st->top]=x;
return 1;
}//出棧
int pop(sqstack *st,int *x)
*x=st->data[st->top--];
return 1;
}//列印棧元素
void printstack(sqstack *st)
}void main(),3};
push(&st,5);
pop(&st,&x);
printf("出棧元素:%d\n",x);
printstack(&st);
}
結果:
注意:在出棧前一定要先判斷棧是否為空,在入棧前一定要判斷棧是否為滿棧。
typedef struct lnodelnode;
ln->next==null;
p->next=ln->next;
ln->next=p;
p=ln->next;
*x=p->data;
ln->next=p->next;
free(p);
#include#includetypedef struct lnodelnode;
//初始化鏈棧
void initstack(lnode *ln)
//判斷鏈棧是否為空
int stackempty(lnode *ln)
//進棧
void push(lnode *ln,int x)
p->next=null;
p->data=x;
p->next=ln->next;
ln->next=p;
}//出棧
int pop(lnode *ln,int *x)
*x=p->data;
ln->next=p->next;
free(p);
return 1;
}void printstack(lnode *ln)
}void main()
結果:
C語言之棧楨
一 記憶體分布 一般我們把程序的位址空間分為 棧區 heap 堆區 stack 未初始化靜態全域性區 已初始化靜態全域性區 字元常量區 區。如圖 二 棧幀的建立與撤銷 我們知道每一次函式呼叫的過程都要為函式開闢棧空間,用於本次函式呼叫中臨時變數的儲存,現場保護。這塊棧空間稱之為函式棧楨。每乙個函式都...
C語言之結構體
一 什麼是結構體 結構體是不同型別的資料組合成乙個有機整體。例如 學生的學號 姓名 性別 成績 位址 這些都是乙個學生的屬性,把這些屬性組織成乙個組合,組合中包含不同的資料型別,c和c 允許指定這樣的資料型別,稱為結構體。struct student 申明乙個結構體型別 struct是結構體申明的關...
C語言之結構體
在c語言中,可以使用結構體 struct 來存放一組不同型別的資料。結構體的定義形式為 struct 結構體名 結構體是一種集合,它裡面包含了多個變數或陣列,它們的型別可以相同,也可以不同,每個這樣的變數或陣列都稱為結構體的成員 member 請看下面的乙個例子 struct stu stu 為結構...