很久就知道链表可以用数组来模拟(其实很多数据结构数组都可以实现),一开始感觉用数组模拟还不简单吗?于是很长的一段时间内都没有去写这个程序。今天突然想到了,想去实现它,结果竟然思考了大概20min才想起如何构造数据结构,看来程序还得多动手实践。
以下是我的代码:
insert(a,b):在链表中值为b的元素前面插入a,如果找不到b,将a插入链表末端;
print():遍历整个链表,并输出。
#include<stdio.h>
#include<string.h>
#define maxn 1007
long n,a[maxn],next[maxn];
void insert(long x,long y)
{
long p=0;
n++;a[n]=x;
while(next[p]&&a[next[p]]!=y)
p=next[p];
next[n]=next[p];
next[p]=n;
}
void print()
{
long p=next[0];
bool first=true;
while(p)
{
if(first) first=false;
else printf(" ");
printf("%ld",a[p]);
p=next[p];
}
}
int main()
{
freopen("data.in","r",stdin);
freopen("data.out","w",stdout);
long m,a,b;
char cmd[maxn];
n=0;
memset(next,0,sizeof(next));
scanf("%ld",&m);
while(m--)
{
scanf("%s",cmd);
if(cmd[0]=='I')
{
scanf("%ld%ld",&a,&b);
insert(a,b);
}
else
{
print();putchar('\n');
}
}
return 0;
}
posted on 2010-03-16 22:39
lee1r 阅读(1854)
评论(0) 编辑 收藏 引用 所属分类:
算法与数据结构