0
点赞
收藏
分享

微信扫一扫

带头结点的单链表插入操作 (5 分)

数数扁桃 2022-03-22 阅读 89

本题要求实现带头结点的单链表插入操作,插入成功返回1,否则返回0。

函数接口定义:

 
int insert_link ( LinkList L,int i,ElemType e);

L是单链表的头指针,i为插入位置,e是插入的数据元素,插入成功返回1,否则返回0。

裁判测试程序样例:

 
#include <stdio.h>
#include <stdlib.h>

typedef int ElemType;
typedef struct LNode
{
    ElemType data;
    struct LNode *next;
}LNode,*LinkList;

LinkList Create();/* 细节在此不表 */
void print( LinkList L);
int insert_link ( LinkList L,int i,ElemType e);
 
int main()
{
    int position,insert_data;int flag;
    LinkList L = Create();
    scanf("%d",&position);
    scanf("%d",&insert_data);    
    flag=insert_link(L,position,insert_data);
    if(flag) 
    {
        print(L);
    }
    else 
    { 
        printf("Wrong Position for Insertion");
    }
    return 0;
}
void print(LinkList L)
{ 
    LinkList p;
    p=L->next;
    while (p)
    {
         printf("%d ", p->data);
         p =p->next;
    }
}
/* 请在这里填写答案 */

输入格式:

输入数据为三行,第一行是若干正整数,最后以-1表示结尾(-1不算在序列内,不要处理)。所有数据之间用空格分隔。 第二行数据是插入位置,第三行数据是被插入元素值。

输入样例:

1 2 3 4 5 6 -1
2 
100

输出样例:

1 100 2 3 4 5 6 
​​​​int insert_link ( LinkList L,int i,ElemType e)
{
    int j=1;
    LinkList p,s;
    p=L;
    while(p&&j<i)
    {
        p=p->next;
    j++;
    }
    if(!p||j>i)
        return 0;
    s = (LinkList)malloc(sizeof(LNode));
    s->data = e;
    s->next = p->next;
    p->next = s;
    return 1;
}
举报

相关推荐

0 条评论