順序表實現棧的基本操作

2021-07-24 13:44:59 字數 2502 閱讀 1745

順序表是一種儲存格式與鍊錶處於同一層次,可以用來實現一些結構,比如棧等。

一.順序表

1.順序表的型別定義(靜態)

#define  list_max_size  100   //空間初始大小

typedef int elemtype; //元素的資料型別

typedef struct

sqlist;

順序表靜態定義,假定 l 是乙個型別 sqlist 的順序表,一般用 l.elem[i] 訪問。表一旦裝滿,不能擴充。

2.順序表的型別定義(動態)

typedef struct 

sqlist;

typedef struct 

sqlist;

順序表動態定義,可以擴充,新增的大小計入資料成員 listsize 中。操作時用指標來操作。

二.順序表基本操作

/*靜態順序表就是用陣列實現

動態順序表是用指標代替陣列,根據指標指向空間可以變化大小的性質實現動態的*/

#include #include #include #include #include using namespace std;

const int listinitsize = 5;

const int listaddsize = 2;

typedef int elemtype;

typedef int status;

int x[12] = ;

typedef struct

sqlist;

void initlist(sqlist *l)//初始化順序表

void createlist(sqlist *l, elemtype e)//建立順序表

*(l->elem) = e;

l->elem++;

}void listinsert(sqlist *l, elemtype i, elemtype e)//插入

elemtype *q = &(l->base[i-1]);

elemtype *p;

for(p = l->elem; p>=q; p--)

*q = e;

l->elem++;

}void locateelem(sqlist *l, elemtype a, elemtype *e)//定位

}}void listdelete(sqlist *l, elemtype i, elemtype *e)//刪除

} void destorylist(sqlist *l)//銷毀順序表

int main()

listinsert(&l, 2, 0);//在第二個元素前插入零

elemtype e;

listdelete(&l, 3, &e);//刪掉第三個元素

printf("delete elem:%d\n", e);

locateelem(&l, 25, &e);//檢視25是第幾個元素

printf("25 is located:%d\n", e);

destorylist(&l);

}

三.順序表實現棧的基本操作

#include #include #include #include #include using namespace std;

const int stackinitsize = 20;

const int stackaddsize = 5;

typedef int elemtype;//元素型別,可以更改

typedef int status;//變數型別,可以更改為double等

typedef struct

sqstack;

void initstack(sqstack *s)//初始化棧

void pushstack(sqstack *s, elemtype e)//壓棧

*(s->top) = e;/*e一定要賦到*(s->top)裡面去******/

s->top++;//陣列指標++

}void popstack(sqstack *s, elemtype *e)//出棧

status getstacklen(sqstack *s)

void clearstack(sqstack *s)//清棧

void destroystack(sqstack *s)//銷毀棧

int main()

elemtype e;

for(int i = 0; i<10; i++)//彈出十個元素

printf("\nstack length:%d\n", getstacklen(&s));

clearstack(&s);//清棧

destroystack(&s);//銷毀棧

return 0;

}



基於順序表實現棧的基本操作

棧 什麼是棧?又該怎麼理解呢?下面實現棧的基本操作 seqstack.h檔案內容 pragma once include include typedef char seqstacktype typedef struct seqstack seqstack void seqstackinit seqs...

順序棧的基本操作實現

這些都是頭函式裡的內容,也就是儲存之後,可以直接 對其進行呼叫。其中的乙個變數stacklen是用來記錄棧 的長度的,其實,這個變數可以不要,只是剛開始寫時 給它加上了,所以就按這樣寫了,感覺跟順序表的寫法 差不多 include include includeusing namespace std...

棧的基本操作及實現(順序棧)

順序儲存結構來實現的棧稱為順序棧,它利用一組位址連續的儲存單元存放自棧底到棧頂的資料元素,同時附設乙個指標top來指示當前棧頂的位置。注意,是c 特有的用來表示引用呼叫,所以此檔案應以.cpp字尾儲存 結構體為 define maxsize 50 typedef int elemtype typed...