c語言之棧結構

2021-07-27 05:26:28 字數 2013 閱讀 3573

棧是一種只能在一端進行插入或者刪除操作的線性表(說明棧還是線性表結構,只是操作受限而已)。其中允許進行插入或者刪除操作的一端稱為棧頂。棧的插入和刪除一般叫入棧和出棧。棧的順序儲存結構叫做順序棧,棧的鏈式儲存結構叫做鏈棧。

#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 為結構...