这是我的输入和输出,原先输出的是2,插入后输出就变成50了。
这是代码段
#include"stdio.h"
#include"stdlib.h"
typedef struct node
{
int date;
struct node*next;
}node,*link;
link fun(link t)
{
node *s;
int c;
int flag=1;
while(flag)
{
c=getchar();
if(c!='*')
{
s=(node*)malloc(sizeof(node));
s->date=c;
s->next=t->next;
t->next=s;
}
else
flag=0;
}
return t;
}
link ins(link t, int i,char e)
{
node *pre,*s;
int k;
pre=t;k=0; /*从头开始查找第i-1个节点*/
while(pre!=NULL&&k<i-1)
{
pre=pre->next;
k=k+1;
}
if(pre==NULL)
{
printf("插入位置不合理!");
}
s=(node*)malloc(sizeof(node));
s->date=e;
s->next=pre->next;
pre->next=s;
printf("success\n");
return t;
}
void main()
{
link t;
t=(link)malloc(sizeof(node));
t->next=NULL;
node *p;
t=fun(t);
p=t->next;
while(p!=NULL)
{
printf("%c\n",p->date);
p=p->next;
}
int e;
printf("请输入插入的字符:");
scanf("%d",&e);
int i;
printf("\n请输入要插入的字符的位置i:");
scanf("%d",&i);
if(0<=i)
{
node *z;
t=ins(t,i,e);
z=t->next;
while(z!=NULL)
{
printf("%d\n",z->date);
z=z->next;
}
}
else
printf("插入位置错误");
}
请老师指点一下。