| 
 | 
 
 本帖最后由 猪李振 于 2009-10-14 13:32 编辑  
 
头插法建立单链表 
#include<stdio.h> 
#include<stdlib.h> 
#define OK 1 
#define ERROR 0 
#define Status int 
typedef int ElemType;/*此处利用#define或typedef 将ElemType先作定义*/ 
typedef struct node 
{ElemType data; 
   struct node *next; 
} *SLink; 
SLink InitList() 
{SLink head; 
head=(SLink)malloc(sizeof(node)); 
head->next=NULL; 
return head;} 
void printlist(SLink L)    //这是一个输出表元的函数 
{SLink p; 
p=L->next; 
printf(" → 头结点"); 
while(p!=NULL) 
{printf("%d",p->data); 
p=p->next;} 
} 
SLink CreateListf(SLink &L ,int n )  //用头插法建表 
{L=InitList() 
SLink p; 
for(int i=1;i<=n;i++) 
{  p=(SLink)malloc(sizeof(node)); 
   scanf(%d",&(p->data)); 
   p->next=L->next; 
   L->next=p; 
} 
} 
int Locate(SLink L,ELemType x) 
{int i=1; 
SLink p=L->next; 
while(p!=NULL&&p->data!=x) 
{p=p->next; 
i++; 
} 
if(p==NULL) 
printf("NO"); 
else 
printf("%d",i); 
return(i); 
} 
void main() 
{SLink y; 
int n,x; 
printf("请输入N的值,它代表y中元素个数:"); 
scanf("%d",&n); 
printf("\n"); 
CreateListf(y,n); 
printf("\n"); 
printf("这是链表y中的元素:"); 
printlist(y); 
  printf("\n\n\n"); 
scanf("%d",&x); 
Locate(y,x); 
printf("n\n\n"); 
} |   
 
 
 
 |