順序表是一種儲存格式與鍊錶處於同一層次,可以用來實現一些結構,比如棧等。
一.順序表
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...