#include<stdio.h>
#include<string.h>
#include<math.h>
#include<algorithm>
const int MAX = 10;
struct node{
int num;
int next;
} CursorSpace[MAX];
void init_CursorSpace()
{
for(int i = 0; i < 9; i++)
{
CursorSpace[i].next = i + 1;
}
CursorSpace[MAX - 1].next= 0;
}
void construction()
{
for(int i = 0; i < 10; i++)
{
scanf("%d",&CursorSpace[i].num);
}
}
int Find(int number,int L)
{
int p = CursorSpace[L].next;
while(p&&CursorSpace[p].num != number)
{
p = CursorSpace[p].next;
}
return p;
}
static int Cursormalloc()
{
int p;
p = CursorSpace[0].next;
CursorSpace[0].next = CursorSpace[p].next;
return p;
}
static int Cursorfree(int p)
{
CursorSpace[p].next = CursorSpace[0].next;
CursorSpace[0].next = p;
}
int Findprevious(int number,int L)
{
int p = L;
while(CursorSpace[p].next&&CursorSpace[CursorSpace[p].next].num != number)
{
p = CursorSpace[p].next;
}
return p;
}
void insert(int number,int L,int p)
{
int Tlic = Cursormalloc();
if(Tlic == 0)
{
printf("out of space!\n");
}
CursorSpace[Tlic].num = number;
CursorSpace[Tlic].next = CursorSpace[p].next;
CursorSpace[p].next = Tlic;
}
int IsEmpty(int L)
{
return CursorSpace[L].next == 0;
}
void del(int number,int L)
{
int Tmp;
int p = Findprevious(number,L);
if(!IsEmpty(p))
{
Tmp = CursorSpace[p].next;
CursorSpace[p].next = CursorSpace[Tmp].next;
Cursorfree(Tmp);
}
}
void print(int L)
{
int p = CursorSpace[L].next;
while(p)
{
printf("%d ",CursorSpace[p].num);
p = CursorSpace[p].next;
}
printf("\n");
}
int main(void)
{
init_CursorSpace();
int L = Cursormalloc();
CursorSpace[L].next = 0;
printf("%d\n",L);
int p = L;
int n,val;
scanf("%d",&n);
for(int i = 0; i < n; i++)
{
scanf("%d",&val);
insert(val,L,p);
p = CursorSpace[p].next;
}
print(L);
int find;
scanf("%d",&find);
printf("%d\n",Find(find,L));
int de;
scanf("%d",&de);
del(de,L);
print(L);
return 0;
}
链表游标实现
最新推荐文章于 2023-12-26 10:32:25 发布