#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
struct data
{
char name[20];
struct data *next;
};
typedef struct data PERSON;
typedef PERSON *LINK; //typedef struct data *LINK
int main (void)
{
LINK head=NULL;
LINK newdata=NULL;
LINK count=NULL;
//实现在链表最前面添加一个节点
newdata=(LINK)malloc(sizeof(PERSON)); //申请新结构实例
newdata->next=head; //新结构实例指向原head指针
head=newdata; //head指针指向新结构实例
strcpy(newdata->name,"A"); //将一个新节点加入到链表的开头
count=head;
while(count->next!=NULL)
{
count=count->next;
} //遍历链表,找到最后一个节点
newdata=(LINK)malloc(sizeof(PERSON)); //申请新结构实例
count->next=newdata; //新结构实例指向末尾节点count->next
newdata->next=NULL; //新结构实例成为链尾 newdata->next=NULL
strcpy(newdata->name,"B");
newdata=(LINK)malloc(sizeof(PERSON)); //申请新结构实例
newdata->next=head->next; //新结构实例指向原来的第二个节点
head->next=newdata; //第一个节点的next成为指向新结构实例
strcpy(newdata->name,"C");
count=head;
while(count!=NULL)
{
printf("%s/n",count->name);
count=count->next;
}
char *p;
p=(char*)malloc(sizeof(PERSON));
puts("查询链表是否含有此数据呢?/n");
gets(p);
puts("喔,我已经开始查找此数据了,等我../n");
count=head;
bool find=false;
while(count->next!=NULL)
{
if(!strcmp(count->name,p))
{
printf("我想我找到了%s/n",count->name);
find=true;
break;
}count=count->next;
}
if(! strcmp(count->name,p) && find!=true)
{
printf("我想我找到了%s/n",count->name);
}
else if(find==false)
{
printf("抱歉了,我遍历了整个链表也没能找到%s/n",p);
}
getch();
return 0;
}
C语言学习,纪录下来吧..虽然很简单。
书上还有一个难一点的例子,搞定它....