可變長順序棧

2021-08-04 05:33:36 字數 2167 閱讀 3299

棧(stack)大家一定不陌生,限定僅在表尾進行插入和刪除操作的線性表。

理解棧,首先要理解棧是線性表的特例,只是操作受限制了;棧的順序儲存結構也是線性表順序儲存的簡化,對於棧這一種只能一頭插入刪除的線性表來說,我們可以用陣列實現它,但是陣列的大小是給定的,如果你想儲存的元素個數多於陣列的個數,這時候自然而然就想到了動態開闢堆空間,手動申請手動釋放……

自己寫了一點函式實……不對的地方望大神給予改正

1棧的定義

2

3 typedef struct

_stack

4stack;

//初始化

1 stack *init_seq_stack(inte)2

8 s->data = (elemtype *)malloc(sizeof(elemtype) *e);

9if (s->data ==null)

1013 s->top = 0

;14 s->len =e;

15return

s;16

17 }

1

static

bool alloc(stack *p)

27 printf("

%d-%d\n

",p->len ,p->len * 2

);8 p->data = (elemtype *)realloc(p->data, p->len * 2 * sizeof(elemtype));//

1024-int

9 p->len = 2*p->len;

1011

return

true;12

13 }

1

bool destory(stack *s)27

free(s->data);

8free

(s);

9return

true;10

}111213

14bool clear_seqstack(stack *s)

1520 s->top = 0;21

return

true;22

}2324bool push(stack *s,elemtype e)

2530

if( is_full(s))

3134

35 s->data[s->top ++] =e ;

36return

true;37

38}3940

41bool pop(stack *s,elemtype *e)

4247

if(is_empty(s))

4851

52 *e = s->data[--s->top];

53return

true;54

}555657

bool is_empty(stack *s)

5863

return s->top == 0;64

}6566bool is_full(stack *s)

6772

return s->top == s->len;73}

7475

int get_length(stack *s)

7681

return s->top;82}

8384

85 elemtype get_top(stack *s,elemtype e)

8691 e = s->data[s->top-1

];92

return

e;9394}

9596

97bool show(stack *s)

98103

for(int i = s->top-1 ;i>=0;i--)

104107 printf("\n"

);108

return

true

;109

}110

111bool set_top(stack *s,elemtype e)

112117

118 s->data [-- s->top] =e;

119return

true

;120 }

可變長順序表

使用動態陣列 標頭檔案 seqlist.h include include define list intt size 100 線性表儲存空間的初始化分配量 define listincrement 10 線性表儲存空間的分配量 typedef int datatype 儲存單元型別 typedef...

可變長引數

由於在c語言中沒有函式過載,解決不定數目函式引數問題變得比較麻煩,即使採用c 如果引數個數不能確定,也很難採用函式過載。對這種情況,提出了指標引數來解決問題。如printf 函式,其原型為 int printf const char format,它除了有乙個引數format固定以外,後面跟的引數的...

可變長引數

可變長引數 指的是在呼叫函式時,傳入的引數個數可以不固定 呼叫函式時,傳值的方式無非兩種,一種是位置實參,另一種是關鍵字實參,因此形參也必須得有兩種解決方法,以此來分別接收溢位的位置實參 與關鍵字實參 形參中的會將溢位的位置實參全部接收,然後儲存元組的形式,然後把元組賦值給後的引數。需要注意的是 後...