#include
#include
#define N 10
//*********************************
//定义链表节的结构
//*********************************
typedef struct node
{
char name[20]; //姓名
struct node * next; //next指针
}stud;
//*********************************
//创建循环链表。n为要创建
//的链表的节点个数不含头节点
//*********************************
stud* creat(int n)
{
stud*p,*h,*s;
int i;
if((h=(stud*)malloc(sizeof(stud)))==NULL)//为头节点申请内存空间
{
printf("不能分配内存空间!");
exit(0);//失败则退出程序
}
h->name[0]=' '; //头节点的neme域为空
h->next=NULL;
p=h;
//为后面的n个节点申请内存空间,并填入姓名
for(i=0;i
if((s=(stud*)malloc(sizeof(stud)))==NULL)
{
printf("不能分配内存空间!");
exit(0);
}
p->next=s; //挂上下一个节点
printf("请输入第%d个人的姓名",i+1);
scanf("%s",s->name);
s->next=NULL;
p=s;
}
p->next=h;
return(h);
}
//*********************************
//搜索节点
//*********************************
stud* search(stud*h, char*x)
{
stud*p;
char*y;
p=h->next;
while(p!=h)
{
y=p->name;
if(strcmp(y,x)==0)
return(p);
else
p=p->next;
}
printf("没有查找到该数据!");
}
//*********************************
//打印链表
//*********************************
void print(stud*h)
{
int n;
stud*p;
p=h->next;
printf("数据信息为:n");
while(p!=h)
{
printf("%s",&*(p->name));
p=p->next;
}
printf("n");
}
//*********************************
//主函数
//*********************************
main()
{
int number;
char studname[20];
stud*head,*searchpoint;
number=N;
clrscr();
head=creat(number);
print(head);
printf("请输入你要查找的人的姓名:");
scanf("%s",studname);
searchpoint=search(head,studname);
printf("你所要查找的人的姓名是:%s",
*&searchpoint->name);
}