简单的静态链表

来源:互联网 发布:网络汉语教师招聘 编辑:程序博客网 时间:2024/05/17 20:01
#ifndef __STATICLIST_#define __STATICLIST_#include<iostream>using namespace std;#define MAXSIZE  8#define ElemType inttypedef struct StaticListNode{ElemType data;int      cur;}StaticListNode;typedef StaticListNode StaticList[MAXSIZE];void InitStaticList(StaticList &SL){SL[0].cur = -1;for(int i=1; i<MAXSIZE-1; ++i){SL[i].cur = i+1;}SL[MAXSIZE-1].cur = -1;}int Malloc_SL(StaticList &SL){if(SL[1].cur == -1)return -1;int i = SL[1].cur;SL[1].cur = SL[i].cur;return i;}void push_back(StaticList &SL, ElemType x){int i = Malloc_SL(SL);if(i == -1)return;SL[i].data = x;SL[i].cur = -1;int j = 0;while(SL[j].cur != -1){j = SL[j].cur;}SL[j].cur = i;}void push_front(StaticList &SL,ElemType x){int i = Malloc_SL(SL);if(i == -1)return;     SL[i].data = x;int j=SL[0].cur;SL[0].cur=i;SL[i].cur = j;}void pop_back(StaticList &SL){     int i=SL[0].cur;int j=SL[i].cur;while(SL[j].cur!=-1){i=SL[i].cur;   j=SL[j].cur;}    SL[i].cur=-1;SL[j].data=NULL;}void pop_front(StaticList &SL){int i=SL[0].cur;SL[0].cur=SL[i].cur;SL[i].data=NULL;}void show_list(StaticList &SL){for(int i=SL[0].cur; SL[i].cur!=-1; i=SL[i].cur){cout<<SL[i].data<<"-->";}cout<<SL[i].data<<"-->"<<"OK!"<<endl;}#endif  




测试代码


#include"StaticList.h"void main(){StaticList SL;InitStaticList(SL);for(int i=1; i<6; i++){//push_front(SL,i);push_back(SL,i);}//push_front(SL,9);//push_back(SL,78);show_list(SL);   // pop_back(SL);pop_front(SL);show_list(SL);}


0 0