编写的单链表在“Print_LinkList(LinkList * head) /*输出函数*/”出现了问题,大家给看看。
#include<stdio.h>/*typedef struct stu_node
{
char cno[10];
char xname[10];
int iscore[4];
}elemtype;*/
typedef int elemtype;
typedef struct node
{
elemtype data;
struct node * next;
}LinkList;
LinkList*head,*p,*m;
LinkList * Create_LinkListR()/*尾插法创建带头节点链表的函数*/
{ elemtype ix;
LinkList*head,*p,*tail;
head=(LinkList*)malloc(sizeof(LinkList));
head->next=NULL;
tail=head;
printf("输入数据直道0时结束:\n");
scanf("%d",&ix);
while(ix!=0)
{ p=(LinkList*)malloc(sizeof(LinkList));
p->data=ix;
tail->next=p;
tail=p;
tail->next=NULL;
scanf("%d",&ix);
}
return(head);
}
void Print_LinkList(LinkList * head) /*输出函数*/
{
int i=0;
printf("输出链表的值为:\n");
LinkList * p=head->next;
while(p!=NULL)
{
printf("\t%d",p->data);
i++;
if(i%5==0)
printf("\n");
p=p->next;
}
printf("\n");
}
int LinkList_Length(LinkList*head) /*单链表长度*/
{ LinkList*p=head;
int j=0;
while(p->next!=NULL)
{
p=p->next;
j++;
}
return j;
}
LinkList * GetData_LinkList(LinkList *head ,int i) /*按结点查找返回地址*/
{
LinkList *p;
int j=0;
if(i<=0)
return NULL;
p=head;
while(p->next!=NULL&&j<i)
{
p=p->next;
j++;
}
if(i==j)
return p;
else
return NULL;
}
LinkList * Search_LinkList(LinkList * head,elemtype key)/*按值查找*/
{
LinkList * p;
p=head->next;
while(p!=NULL)
if(p->data!=key)
p=p->next;
else
break;
return p;
}
void main()
{
head=Create_LinkListR();
Print_LinkList(head);
printf("\n表长为:%d\n",LinkList_Length(head));
m=GetData_LinkList(head,2);
printf("\n第2个结点的值为:%d\n",m->data);
m=Search_LinkList(head,2);
if(m!=NULL)
printf("查找成功!\n");
else
printf("查找失败!\n");
}