#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#include<string.h>
#define N 3
typedef struct node
{
char name[20];
struct node *next;
}stud;
stud *creat(int n)
{
stud *p,*h,*s;
int i;
if((h=(stud*)malloc(sizeof(stud)))==NULL)
{
printf("不能分配内存空间!");
exit(0);
}
h->name[0] = '\0';
h->next=NULL;
p = h;
for(i = 0;i<n;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;
}
return(h);
}
void printList(stud *p)
{
while(p->next)
{
p = p->next;
printf("%s\n",p->name);
}
}
void reverse(stud *p)
{
stud *a,*b,*c;
a = p;
b = p->next;
while(b->next!=NULL)
{
c=b->next;
b->next = a;
a = b;
b=c;
}
b->next = a;
p->next->next = NULL;
p->next=b;
}
void find(stud* head,char *t)
{
stud *p,*s;
p =head;
while((p->next)&&(strcmp(p->next->name,t)))
p = p->next;
if(p->next)
{
printf("找到了!哦耶\n");
}
else
{
printf("没找到,大哭!\n");
}
}
void main()
{
int number;
stud *head;
char t1[80];
char *t2;
number = N;
head = creat(number);
printf("创建好的链表为:\n");
printList(head);
reverse(head);
printf("单链表逆置之后:\n");
printList(head);
printf("输入要查找的字符串\n");
// gets(t1);
scanf("%s",&t1);
find(head,t1);
}
单链表的查找(完整程序 以字符串为数据)
最新推荐文章于 2024-07-24 17:47:09 发布