在单链表的指定位置插入一个值


#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,则表示搜索失败,该值不存在,这个代码涉及插入以及判断两个部分,并且需要输出时为单列输出。各位有没有好的博客可以借鉴一下。

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^