#include
#include
typedef struct node//单链表
{
int date;
struct node *next;
}node;
typedef struct node *linklist;
void createlist(linklist *&L)//尾插法创建单链表
{
linklist p,r;
int n,i,e;
scanf("%d",&n);
*L=(linklist)malloc(sizeof(node));//L为整个线性表
r=*L;//r为指向尾部的节点
for(i=0;i
{
p=(node *)malloc(sizeof(node));//生成新节点
scanf("%d",&e);
p->date=e;
r->next=p;
r=p;
}
r->next=NULL;
}
void sertlist(linklist *&L)//插入数据
{
int i,j,e;
scanf("%d",&i);
scanf("%d",&e);
linklist p,s;
p=*L;//指向链表头结点
j=1;
while(p&&j
{
p=p->next;
j++;
}
if(!p||j>i)
printf("error\n");
s=(linklist)malloc(sizeof(node));
s->date=e;
s->next=p->next;
p->next=s;
}
void showlist(linklist *L)
{
linklist p;
p=*L;
while(p)
{
printf("%d ",p->date);
p=p->next;
}
}
int main()
{
linklist *L;
createlist(L);
sertlist(L);
showlist(L);
return 0;
}
修改处见注释,供参考:
#include <stdio.h>
#include <stdlib.h>
typedef struct node//单链表
{
int date;
struct node* next;
}node;
typedef struct node* linklist;
void createlist(linklist& L)//尾插法创建单链表 linklist*& L 修改
{
linklist p, r;
int n, i, e;
scanf("%d", &n);
L = (linklist)malloc(sizeof(node));//L为整个线性表 修改
//*L = (linklist)malloc(sizeof(node)); 修改
r = L;//r为指向尾部的节点 修改
for (i = 0; i < n; i++) //修改
{
p = (node*)malloc(sizeof(node));//生成新节点
scanf("%d", &e);
p->date = e;
r->next = p;
r = p;
}
r->next = NULL;
}
void sertlist(linklist& L)//插入数据 linklist*& L 修改
{
int i, j, e;
scanf("%d", &i);
scanf("%d", &e);
linklist p, s;
p = L;//指向链表头结点 p = *L; 修改
j = 0;//修改 j = 1;
while (p && j < i)
{
p = p->next;
j++;
}
if (!p || j > i) { //修改
printf("error\n");
return; //修改
}
s = (linklist)malloc(sizeof(node));
s->date = e;
s->next = p->next;
p->next = s;
}
void showlist(linklist L) //linklist* L 修改
{
linklist p;
p = L->next; //p = *L; 修改
while (p)
{
printf("%d ", p->date);
p = p->next;
}
}
int main()
{
linklist L; //linklist* L; 修改
createlist(L);
sertlist(L);
showlist(L);
return 0;
}
无法输入是啥现象?