静态链表

来源:互联网 发布:怪医黑杰克ova 知乎 编辑:程序博客网 时间:2024/06/05 17:38
静态链表:利用顺序表模拟带头节点的循环链表,0下标作为有效链的表头,1下标作为空闲链的表头。
#define SIZE 10typedef struct SNode{int data;//数据int next;//保存下一个节点的下标}SNode,*PSList;void InitSList(PSList ps){assert(ps != NULL);for(int i=0;i<SIZE;i++){ps[i].next = i+1;}ps[0].next = 0;ps[SIZE-1].next = 1;}static bool IsFull(PSList ps){return ps[1].next == 1;}bool Insert_head(PSList ps,int val){if(IsFull(ps)){return false;}int p = ps[1].next;ps[1].next = ps[p].next;ps[p].data  = val;ps[p].next = ps[0].next;ps[0].next = p;return true;}bool IsEmpty(PSList ps){return ps[0].next == 0;}static int SearchPri(PSList ps,int key){for(int p = 0;ps[p].next != 0;p = ps[p].next){return p;}return -1;}int Search(PSList ps,int key){for(int p = ps[0].next;p != 0;p = ps[p].next){if(ps[p].data == key){return p;}}return -1;}void Show(PSList ps){for(int p = ps[0].next;p != 0;p = ps[p].next){printf("%d",ps[p].data);}printf("\n");}


原创粉丝点击