数据结构-静态单链表节点的查找
时间限制(普通/Java):1000MS/3000MS 运行内存限制:65536KByte
总提交:142 测试通过:88
总提交:142 测试通过:88
描述
在实现单链表的时候,有时可以使用一维数组来表示,静态单链表节点的查找操作是静态单链表数据结构对象操作的重要内容,请您写一个程序完成在一个静态单链表查找某一个节点的操作。
请用如下函数完成上述功能,静态单链表结构的定义如下(强烈建议使用下面的定义和函数结构):
#define MAXSIZE 1000 //
typedef struct{
ElemType data;
int cur;
}component,SLinkList[MAXSIZE];
int LocateElem_SL(SLinkList S,ElemType e)
输入
输入包括多组测试数据,每组测试数据包括多行,第一行是静态单链表的内容,第二行是要查找的元素个数N,第三行是要查找的N个元素,用空格隔开。
输出
对每组测试数据,如果查找成功则输出,该元素在静态单链表中的位置,否则输出0;
样例输入
S1 = ( M O K O I M G K J )
2
G U
S2 = ( K G H H P O A K O L K F O )
4
H O O S
2
G U
S2 = ( K G H H P O A K O L K F O )
4
H O O S
样例输出
S1 = ( M O K O I M G K J )
LocateElem_SL(S, 'G') = 7
LocateElem_SL(S, 'U') = 0
S2 = ( K G H H P O A K O L K F O )
LocateElem_SL(S, 'H') = 3
LocateElem_SL(S, 'O') = 6
LocateElem_SL(S, 'O') = 6
LocateElem_SL(S, 'S') = 0
LocateElem_SL(S, 'G') = 7
LocateElem_SL(S, 'U') = 0
S2 = ( K G H H P O A K O L K F O )
LocateElem_SL(S, 'H') = 3
LocateElem_SL(S, 'O') = 6
LocateElem_SL(S, 'O') = 6
LocateElem_SL(S, 'S') = 0
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
using namespace std;
typedef char Elemtype;
char a[10000];
char b[10000];
char c[10000];
typedef struct LNode
{
Elemtype data;
struct LNode *next;
} LNode,*LinkList;
void build(LinkList &la)
{
if((la=new LNode)==NULL)
exit(-1);
la->next=NULL;
}
void tailbuild(LinkList &l)
{
LinkList q,p;
int i;
p=l;
int len=strlen(a);
int f=0;
for(i=0; i<len; i++)
{
if(a[i]=='(')
f=1;
if((a[i]>='a'&&a[i]<='z')||(a[i]>='A'&&a[i]<='Z')&&(f==1))
{
q=new LNode;
q->data=a[i];
p->next=q;
p=q;
p->next=NULL;
}
}
}
int seinsert(LinkList l,char ch)
{
int i=1;
LinkList p;
p=l;
p=p->next;
while(p)
{
//cout<<p->data<<endl;
if(p->data==ch)
{
break;
}
i++;
p=p->next;
}
if(!p)
return 0;
return i;
}
void print(LinkList l)
{
LinkList q;
q=l;
while(q->next!=NULL)
{
q=q->next;
cout<<q->data<<" ";
}
}
int main()
{
LinkList la;
int n,m,i;
char ch;
while(gets(a))
{
scanf("%d",&n);
getchar();
for(i=0; i<n; i++)
{
scanf("%c",&b[i]);
scanf("%c",&ch);
}
build(la);
tailbuild(la);
puts(a);
for(i=0; i<n; i++)
{
int t=seinsert(la,b[i]);
printf("LocateElem_SL(S, '%c') = %d\n",b[i],t);
}
}
return 0;
}