线性表--算法设计题2.13and2.14

1、试写一算法在带头结点的单链表结构上实现线性表操作Locate(L,x)

2、试写一算法在带头结点的单链表结构上实现线性表操作Length(L)

 

C code:

 #include<stdio.h>

#include<stdlib.h>
#define ERROR 0
#define OK 1
#define OVERFLOW -1
#define TRUE 1
typedef 
int Status;

struct LNode
{
     
int data;
     LNode 
*next;
};
typedef LNode 
*LinkList;

void InitList(LinkList &L)
{
     L
=(LinkList)malloc(sizeof(LNode));
     
if(!L)
       exit(OVERFLOW);
     L
->next=NULL;
}

int ListLength(LinkList L)
{
     
int i=0;
     LinkList p
=L->next;
     
while(p)
     {
          i
++;
          p
=p->next;
        }
        
return i;
}

int LocateElem(LinkList L,int e)
{
     
int i=0;
     LinkList p
=L->next;
     
while(p)
     {
          i
++;
          
if(p->data==e)
            
return i;
          p
=p->next;
        }
        
return 0;
}

void CreateList(LinkList &L,int n)
{
     
int i;
     LinkList p,q;
     L
=(LinkList)malloc(sizeof(LNode));
     L
->next=NULL;
     q
=L;
     printf(
"Please input %d numbers:\n",n);
     
for(i=1; i<=n; i++)
     {
          p
=(LinkList)malloc(sizeof(LNode));
          scanf(
"%d",&p->data);
          q
->next=p;
          q
=q->next;
        }
        p
->next=NULL;
}

void judge(LinkList L,int x)
{
     
int flag;
     flag
=LocateElem(L,x);
     
if(flag)
       printf(
"elem %d is in the %d place of L",x,flag);
     
else
       printf(
"elem %d is not in L",x);
}

void PrintList(LinkList L)
{
     LinkList p;
     p
=L->next;
     
while(p)
     {
          printf(
"%d ",p->data);
          p
=p->next;
        }
        printf(
"\n");
    
}

int main()
{
     LinkList L;
     
int len,x;
     CreateList(L,
8);
     printf(
"LinkList L:");
     PrintList(L);
     len
=ListLength(L);
     printf(
"The LinkList L'length is:%d\n",len);
     printf(
"input number x:");
     scanf(
"%d",&x);
     judge(L,x);
     
return 0;
    
}
posted @ 2011-04-27 20:59  cpoint  阅读(545)  评论(0编辑  收藏  举报
浏览次数:travelocity promotion codes