静态链表系列操作

来源:互联网 发布:游戏常用的算法 编辑:程序博客网 时间:2024/06/15 20:54
静态链表
#include <iostream>#include <cstdlib>using namespace std;#define maxn 105typedef struct{   int data;   int cur;}stackLinkList;void init(stackLinkList *L){   for(int i=0;i<maxn-1;i++)      L[i].cur=i+1;   L[maxn-1].cur=0;}void input(stackLinkList *L){   int i=1;   int x;   cin>>x;   while(x!=-1)   {      L[i++].data=x;      cin>>x;   }   L[0].cur=i;   i--;   L[i].cur=0;   L[maxn-1].cur=1;}int malloc_SLL(stackLinkList *L){   int i=L[0].cur;   if(L[0].cur)      L[0].cur=L[i].cur;   return i;}void Free_SLL(stackLinkList *L,int k){   L[k].cur=L[0].cur;   L[0].cur=k;}void ListInsert(stackLinkList *L,int pos,int e){   int k=maxn-1;   int j=malloc_SLL(L);   if(pos<1||pos>L[0].cur)      return ;   if(j)   {      L[j].data=e;      for(int u=1;u<=pos-1;u++)         k=L[k].cur;      L[j].cur=L[k].cur;      L[k].cur=j;   }}void ListDelete(stackLinkList *L,int pos){   if(pos<1||pos>=L[0].cur)      return ;   int k=maxn-1;   for(int u=1;u<=pos-1;u++)      k=L[k].cur;   int j=L[k].cur;   L[k].cur=L[j].cur;   Free_SLL(L,j);}void print(stackLinkList *L){   int i=1;   while(i!=0)   {      cout << L[i].data << ' ';      i=L[i].cur;   }   cout << endl;}int main(){    stackLinkList sl[maxn];    init(sl);    input(sl);    ListInsert(sl,3,999);    print(sl);    ListInsert(sl,3,999);    print(sl);    ListDelete(sl,3);    print(sl);    ListDelete(sl,3);    print(sl);    return 0;}

原创粉丝点击