马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
代码:
#include <stdio.h>
#define MAXSIZE 1000
typedef struct
{
char date;
int cur;
}nice;
nice * InitList(nice space[]); //初始化数组
nice * getList(nice space[]); //输入数据
void PrinList(nice space[]); //打印数组
nice * deleList(nice space[]); //删除特定的数据
nice * insertList(nice space[]); //插入数据
nice * insertList(nice space[])
{
char T;
int i = 0, temp, ctemp;
T = getchar();
getchar();
while (1)
{
if (i == 0)
{
i = space[MAXSIZE - 1].cur;
}
else
{
i = space[i].cur;
}
if (space[i].date == T)
{
temp = space[space[0].cur].cur; //把0数组的下一位数组单独提取出来
space[temp].date = getchar();
getchar();
/*if (space[MAXSIZE - 1].cur == i) //前插
{
space[space[0].cur].cur = space[temp].cur; //把最后两个链表连接起来
space[temp].cur = space[MAXSIZE - 1].cur; //把第一个链表的下标给与temp下标的cur
space[MAXSIZE - 1].cur = temp; //把第一个链表数组更改为temp(最后一个数组中的cur是记录谁是第一个带数据数组的)
}
else
{
space[space[0].cur].cur = space[temp].cur; //把最后两个链表连接起来
space[temp].cur = i; //把单独腾挪出来的数组数值储存段赋予本次数组数值
space[ctemp].cur = temp; //把单独腾挪出来的数组的下标赋值给上一个数组的cur位置
}*/
//后插
space[space[0].cur].cur = space[temp].cur;
space[temp].cur = space[i].cur;
space[i].cur = temp;
break;
}
ctemp = i; //用于前插得变量
}
return space;
}
nice * deleList(nice space[])
{
char T;
int i = 0, temp;
T = getchar();
getchar();
while (1)
{
if (i == 0)
{
i = space[MAXSIZE - 1].cur;
}
else
{
i = space[i].cur;
}
if (space[i].date == T)
{
if (space[MAXSIZE - 1].cur == i)
{
space[MAXSIZE - 1].cur = space[i].cur;
space[i].cur = space[space[0].cur].cur;
space[space[0].cur].cur = i;
}
else
{
space[temp].cur = space[i].cur;
space[i].cur = space[space[0].cur].cur;
space[space[0].cur].cur = i;
}
break;
}
temp = i;
}
return space;
}
nice * getList(nice space[])
{
if (space[MAXSIZE - 1].cur == MAXSIZE)
{
space[MAXSIZE - 1].cur = 1;
}
space[space[0].cur].date = getchar();
getchar();
space[0].cur = space[space[0].cur].cur;
return space;
}
void PrinList(nice space[])
{
int i = 0;
while (1)
{
if (i == 0)
{
i = space[MAXSIZE - 1].cur;
}
else
{
i = space[i].cur;
}
if (space[0].cur == i)
{
break;
}
printf("<%d:%c>",space[i].cur, space[i].date);
}
}
nice * InitList(nice space[])
{
int i = 0;
for (i = 0; i <= MAXSIZE -1; i++)
{
space[i].cur = i + 1;
}
return space;
}
int main()
{
int T;
nice space[MAXSIZE];
while (1)
{
printf("输入选项:");
scanf("%d", &T);
getchar();
switch(T)
{
case 1:{
InitList(space); //初始化数组
break;
}
case 2:{
getList(space); //输入数据
break;
}
case 3:{
deleList(space); //删除数据
break;
}
case 4:{
insertList(space); //插入数据
break;
}
case 9:{
PrinList(space); //打印数组
putchar('\n');
break;
}
case 0:{
return 0;
}
}
}
return 0;
}
|