www.pudn.com > zb.rar > 002.c


#include "stdio.h" 
#include "conio.h" 
#define NUM  500 
 
struct nodetype 
{int info,next; 
}; 
struct nodetype node[NUM]; 
int p; 
 
int creatnode()          /*生成链表*/ 
{int i=1; 
 int b,n; 
 printf("please input the node,end by 999.\n");   
  do 
  {scanf("%d",&node[i].info); 
     node[i].next=i+1; 
     i++; 
  }while(node[i-1].info!=999); 
  n=i-2; 
  node[i-2].next=-1; 
  i=1; 
  printf("the list is:"); 
  do{printf("%d\t",node[i].info); 
     i=node[i].next; 
     } 
  while(i!=-1); 
  p=1; 
 return(n); 
} 
 
 
insert2(int n)      /*插入数据*/ 
{int c,d; 
 int i; 
 printf("n=%d\n",n); 
 printf("input the location and data you want to insert:\n"); 
 do 
  {printf("\nlocation:"); 
   scanf("%d",&c); 
   printf("\ndata:"); 
   scanf("%d",&d); 
    if((c<1)||(c>n+1)) 
    printf("ERROR!input again:\n"); 
  }while((c<1)||(c>n+1)); 
  node[n+1].info=d; 
  i=p; 
  if(c==1) 
    {node[n+1].next=p; 
     p=n+1; 
     printf("p=%d",p); 
     } 
     else  
  {do{i=node[i].next; 
     } 
   while(i!=c-1); 
 
   if(i!=n) 
   {node[n+1].next=node[i].next; 
    node[i].next=n+1; 
    } 
 
   else 
   {node[i].next=n+1; 
    node[n+1].next=-1; 
    } 
   } 
   i=p; 
   printf("the list is:"); 
   do{printf("%d\t",node[i].info); 
     i=node[i].next; 
     } 
   while(i!=-1); 
   n=n+1; 
 return(n); 
} 
 
void travel()             /*遍历链表*/ 
{int i; 
 i=p; 
  printf("the list is:"); 
  do{printf("%d\t",node[i].info); 
     i=node[i].next; 
     } 
  while(i!=-1); 
} 
 
void delect()           /*删除数据*/ 
{int x,i,q; 
 int s; 
 printf("\nwhich data you want to delect:\n"); 
 scanf("%d",&x); 
 i=p; 
 while((node[i].info!=x)&&(node[i].next!=-1)) 
      i=node[i].next; 
 if(node[i].info==x) 
 {q=1; 
  while(node[q].next!=i) 
    q=node[q].next; 
  if(node[i].next!=-1) 
    node[q].next=node[i].next; 
  else 
    node[q].next=-1; 
  i=p; 
  printf("the list is:"); 
  do{printf("%d\t",node[i].info); 
     i=node[i].next; 
     } 
  while(i!=-1); 
  } 
 else 
   printf("there is no this data\n"); 
 return; 
} 
 
show1() 
{ int a; 
 printf("\n===============================================================\n"); 
 printf("\t*1 insert an element.\n\t*2 delect an element.\n\t*3 travel the link.\n\t*4 exit.\n"); 
 printf("\n===============================================================\n"); 
 printf("choice is :"); 
 do 
 {scanf("%d",&a); 
  if((a<1)||(a>4)) 
   printf("ERROR!please input again:\n"); 
 }while((a<1)||(a>4)); 
 return(a); 
} 
 
 
str() 
{int a; 
 int n; 
 n=creatnode(); 
 do 
 {a=show1(); 
  switch(a) 
  {case 1:{n=insert2(n); 
           break; 
           } 
 
   case 2:{delect(); 
           break; 
           } 
 
   case 3:{travel(); 
           break; 
           } 
 
   case 4:break; 
  } 
 }while(a!=4); 
}