#include<stdio.h>
#include<stdlib.h>
typedef struct Node{
int data;
struct Node *next;
}Node;
typedef struct Node *linklist;
linklist init_create()//创建一个链表
{
linklist L;
L=(linklist)malloc(sizeof(Node));
L->next=NULL;
return L;
}
int insert_list(linklist L,int num,int place)
{
linklist pnew,p;
p=L;
int i=0;
while(i<place-1&&p!=NULL)
{
p=p->next;
i++;
}
if(i>place-1||p==NULL)
{
printf("out of space\n");
return 0;
}
else{
pnew=(linklist)malloc(sizeof(Node));//从这里可知L第一个位置未插入数据,数据为空。
pnew->data=num;
pnew->next=p->next;
p->next=pnew;
return 1;
}
}
void show(linklist L)
{
linklist p;
p=L->next;
while(p!=NULL)
{
printf("%4d",p->data);
p=p->next;
}
}
int main()
{
linklist l;
l=init_create();
for(int i=1;i<=10;i++)
{
insert_list(l,i,i);
}
show(l);
return 0;
}
三个部分:
一,链表的创建init_create(),用结构体来存储数据
typedef struct Node{
int data;
struct Node *next;
}Node;
typedef struct Node *linklist;//定义linklist指向Node,用typedef来进行控制
linklist init_create()//创建一个链表
{
linklist L;
L=(linklist)malloc(sizeof(Node));
L->next=NULL;
return L;
}
二,数据的插入
int insert_list(linklist L,int num,int place)
{
linklist pnew,p;
p=L;
int i=0;
while(i<place-1&&p!=NULL)
{
p=p->next;
i++;
}
if(i>place-1||p==NULL)
{
printf("out of space\n");
return 0;
}
else{
pnew=(linklist)malloc(sizeof(Node));
pnew->data=num;
pnew->next=p->next;
p->next=pnew;
return 1;
}
}
注意对i=0进行赋值,从0开始
3部分,p,pnew的定义;
寻找插入的地方;
插入数据
void show(linklist L)
{
linklist p;
p=L->next;
while(p!=NULL)
{
printf("%4d",p->data);
p=p->next;
}
}
注意p=L->next;
L中未存储数据。