⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 单链表插入.c

📁 单链表的插入算法
💻 C
字号:
//单链表的插入 
#include "Stdio.h"
#include "Conio.h"

#define flag 0
typedef int datatype;
typedef struct node
{
    datatype data;
    struct node *next;
}LNode,*LinkList;
LinkList Creat_LinkList();
LNode *Get_LinkList(LinkList L,int i);
int Insert_LinkList(LinkList L,int i,datatype x);
void Put_LinkList(LinkList H);
main()
{
    LinkList H;
    int i;
    datatype x;
    H=Creat_LinkList();
    printf("输入 i:");
    scanf("%d",&i);
    printf("输入数字:");
    scanf("%d",&x);
    if(Insert_LinkList(H,i,x)==1)
    Put_LinkList(H);
    getch();
}
LinkList Creat_LinkList()
{
    LinkList L=NULL;
    LNode *s,*R=NULL;
    int x;
    s=(LNode *)malloc(sizeof(LNode));
    R=s;
    L=s;
    scanf("%d",&x);
    while(x!=flag)
    {
        s=(LNode *)malloc(sizeof(LNode));
        s->data=x;
        R->next=s;
        R=s;
        scanf("%d",&x);
    }
    R->next=NULL;
    return L;
}
LNode *Get_LinkList(LinkList L,int i)
{
    LNode *p=L;
    int j=0;
    while(p->next!=NULL&&j<i)
    {
        p=p->next;
        j++;
    }
    if(j==i) return p;
    else return NULL;
}
int Insert_LinkList(LinkList L,int i,datatype x)//在单链表L的第i个位置上插入值为x的元素 
{
    LNode *p,*s;
    p=Get_LinkList(L,i-1);//查找第i-1个结点 
    if(p==NULL)
    {
        printf("参数i错!");
        return 0;
    }//第i-1个结点不存在,不能插入 
    else
    {
        s=(LNode *)malloc(sizeof(LNode));//申请,填装结点 
        s->data=x;
        s->next=p->next;//新结点插入在第i-1个结点的后面 
        p->next=s;
        return 1;
    }
}
void Put_LinkList(LinkList L)
{
    LNode *p;
    p=L->next;
    while(p!=NULL)
    {
        printf("%d\t",p->data);
        p=p->next;
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -