全部代码:
#define NULL 0
typedef char ELEMTYPE;
typedef struct node{
ELEMTYPE data;
struct node *next;
}LNODE,*LINKLIST;
LINKLIST list_init() \\链表初始化
{
LINKLIST L;
L=(LINKLIST)malloc(sizeof(LNODE));
L->next=NULL;
return L;
}
void list_insert(LINKLIST L,LINKLIST X) \\插入节点到链表
{
X->next=L->next;
L->next=X;
}
int length(LINKLIST L) \\求链表的长度
{
int i;
LINKLIST P=L;
i=0;
while(P->next!=NULL)
{
i++;
P=P->next;
}
return i;
}
void list_play(LINKLIST L) \\显示链表的节点
{
LINKLIST P;
P=L;
while(P->next!=NULL)
{
P=P->next;
printf("%c",P->data);
}
}
LINKLIST list_delete(LINKLIST L,int i) \\删除链表中指定编号的节点
{
LNODE *p,*r;
int j=1;
p=L;
while(j<=i&&p->next!=NULL)
{ r=p;
p=p->next;
j++;
}
if(j<i||i<=0)
printf("weizhierror");
else
r->next=p->next;
return L;
}
int search_bianhao(LINKLIST L,char m) \\显示链表中指定节点的编号
{
int i=1;
while(L&&L->data!=m&&(L=L->next,i++)) ;
return L?i:0;
}
void main()
{
LNODE *L,*s;
int i;
char c;
L=list_init();
for(i=0;i<5;i++)
{
c=getch();
s=(LINKLIST)malloc(sizeof(LNODE));
s->data=c;
list_insert(L,s);
}
list_play(L);
printf("\n");
list_delete(L,3);
list_play(L);
printf("\n");
c='4';
i=search_bianhao(&L,c);
printf("%d",i);
getch();
}
红色代码运行时出现错误,总是显示'0',如果换成用户'soft_wind'的也一样,怪哉!
int ist_postion(LNODE *head,char ch) \\显示字符在链表里的位置的函数
{
LNODE *p=head;
int i=1;
for(;p;p=p->next)
{
if(p->data==ch)
break;
i++;
}
if(p) return i;
else return 0;
}
[此贴子已经被作者于2006-8-26 15:03:53编辑过]
----------------解决方案--------------------------------------------------------
i=search_bianhao(L,c);
不要用引用!明显与LNODE * 类型不一致.都说了不要用这种写法!
----------------解决方案--------------------------------------------------------
详细解释解释代码问题所在
----------------解决方案--------------------------------------------------------
明显与LNODE * 类型不一致.
----------------解决方案--------------------------------------------------------