#include
#include
#include
struct stu {
char data[12];
struct stu *next;
};
/*创建链表,参数n是初始化链表时建立的数据个数
prev:指向当前结点的前一个结点
cur:指向当前结点
head:保存表头结点的指针
*/
struct stu* CreatList(int n) {
int i;
struct stu *prev,*cur,*head;
head=(struct stu*)malloc(sizeof(struct stu));
if(head==NULL) {
printf("Can't alloc memory\n");
return NULL;
}
prev=head;
head->data[0]='\0';
head->next=NULL;
for(i=1; i<=n; i++) {
cur=(struct stu*)malloc(sizeof(struct stu));
if(cur==NULL) {
printf("Can't alloc memory\n");
return NULL;
}
scanf("%s",cur->data);
prev->next=cur;
cur->next=NULL;
prev=cur;
}
printf("链表初始化创建成功!\n");
return head;
}
/*遍历链表,打印链表数据*/
void Print(struct stu *head) {
struct stu *cur;
cur=head->next;
while(cur!=NULL) {
printf("%s\n",cur->data);
cur=cur->next;
}
}
//在搜索的位置后插入一个新的元素
/*
*param @searchData 要插入位置的元素
*param @insertData 要插入的元素
*成功后输出“链表插入成功!\n”
*失败后输出"未找到位置,链表插入失败!\n"
*/
struct stu* AddNode(struct stu *head,char searchData[],char insertData[]) {
int i = 0;
struct stu *cur,*insert;
insert=(struct stu*)malloc(sizeof(struct stu));
cur=head->next;
while(cur!=NULL) {
/**************begin********************/
/********************end****************/
}
return head;
}
int main() {
int number;
printf("请输入链表长度和元素创建链表:\n");
scanf("%d",&number);
char searchData[12],insertData[12];
struct stu *head,*cur,*fro;
head=CreatList(number);
if(head==NULL)
return -1;
Print(head);
printf("请输入要搜索的内容:\n");
scanf("%s",searchData);
printf("请输入要插入的内容:\n");
scanf("%s",insertData);
AddNode(head,searchData,insertData);
Print(head);
}
依次输出链表节点的元素,判断与需求的是否一致,若一致则找到该节点。若为NULL,则表示搜索失败,该值不存在,这个代码涉及插入以及判断两个部分,并且需要输出时为单列输出。各位有没有好的博客可以借鉴一下。
不知道你这个问题是否已经解决, 如果还没有解决的话: