首页 > 代码库 > 线性表之静态链表
线性表之静态链表
#include<iostream>#include <iomanip>#include"windows.h"using namespace std;struct StaticLinkNode{ int data; int next;};struct StaticLink{ StaticLinkNode* nodes; int maxCnt; int cnt;};StaticLink createStaticLink(int max){ StaticLink p; p.nodes=new StaticLinkNode[max+2]; for(int i=0;i<max;i++) p.nodes[i].next=i+1; p.nodes[max].next=0; p.nodes[max+1].next=0; p.maxCnt=max; p.cnt=0; return p;}int getSpare(StaticLink* p){ int first = (*p).nodes[0].next; if(first!=0) (*p).nodes[0].next = (*p).nodes[first].next; return first;}void releaseToSpare(StaticLink* p,int i){ int first = (*p).nodes[0].next; (*p).nodes[i].next=first; (*p).nodes[0].next=i;}bool add(StaticLink* p,int i,int value){ int target =getSpare(p); if(target==0) return 0; int first =(*p).maxCnt+1; for(int j=0;j<i-1 && first;j++) first = (*p).nodes[first].next; if(first!=0) { (*p).nodes[target].data=http://www.mamicode.com/value; (*p).nodes[target].next = (*p).nodes[first].next; (*p).nodes[first].next=target; (*p).cnt++; return 1; } return 0;}bool remove(StaticLink* p,int i){ int first =(*p).maxCnt+1; if(first==0) return 0; for(int j=0;j<i-1 && (*p).nodes[first].next;j++) first = (*p).nodes[first].next; if((*p).nodes[first].next) { int t=(*p).nodes[first].next ; (*p).nodes[first].next = (*p).nodes[(*p).nodes[first].next].next; releaseToSpare(p,t); (*p).cnt--; return 1; } return 0;}void output(StaticLink* p){ int first =(*p).nodes[(*p).maxCnt+1].next; while(first!=0) { cout<<(*p).nodes[first].data<<" "; first=(*p).nodes[first].next; } cout<<endl;}void main(){ int max=28; StaticLink p= createStaticLink(28); for(int i=0;i<15;i++) { int x = rand()%100; cout<<x<<" "; add(&p,p.cnt+1,x); } cout<<endl; output(&p); add(&p,2,45); output(&p); add(&p,1,55); output(&p); add(&p,p.cnt,65); output(&p); add(&p,p.cnt+1,75); output(&p); remove(&p,2); output(&p); remove(&p,1); output(&p); remove(&p,p.cnt); output(&p); remove(&p,p.cnt+1); output(&p); cin>>max;}
线性表之静态链表
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。