回 帖 发 新 帖 刷新版面

主题:高手看一下单链表的插入哈

#include<stdio.h>
#include<stdlib.h>
#define error 0
#define ok 1
typedef int elemtype;
typedef struct node
{
 int data;
 struct node * next;
}node;
creatclist(node * clist,int n)
{node *p;
 int j;
 clist=(node *)malloc(sizeof(node)); /*tou jie dian*/
 clist->next=NULL;
 for (j=n;j>0;--j)
 {
  p=(node *)malloc(sizeof(node));    /*jian li lian biao*/
  scanf("%d",&(p->data));
  p->next=clist->next;clist->next=p;
  printf("%d\n",p->data);
 }
}
insertclist(node *clist,int i,elemtype e)
{node * q,*s;
 int j;
 q=(node *)malloc(sizeof(node));
 q=clist;j=0;
 while (q&&j<i-1)
 {
  q=q->next;
  j++;
 }
 if (!q||j>i-1) return error;
 s=(node *)malloc(sizeof(node));
 s->data=e;s->next=q->next;
 q->next=s;
 return ok;
 printf("%d",s->data); 
 printf("%d",s->next->data);
}
void main()
{node clist;
 int n,e,i;
 scanf("%d",&n);
 creatclist(&clist,n);
 printf("please input the number which you want to insert:\n");
 scanf("%d",&e);
 printf("the direction which you want to insert:\n");
 scanf("%d",&i);
 insertclist(&clist,i,e);
}
高帮我看一下insertclist()函数这里有错没有;我想看一下S到底插入成功没有,于是想看一下S后面这个数是不是S插入后紧接它后面的数!请高手看一下哈.C是面编译通过,但看S后面的数输出的都是0哈.请师兄帮忙!

回复列表 (共4个回复)

沙发

return ok;
 printf("%d",s->data); 
 printf("%d",s->next->data);
输出在返回之后怎么会有输出呢?

createlist()要返回一个头指针给clist才行,insertlist()才可以使用clist

板凳


请问师兄怎么返回哈!

3 楼

像下面修改一下代码
node * clist;
node* createlist()
clist=createlist();
在createlist()里面返回clist   return clist;

4 楼

谢谢师兄哈,其实我也用了另外一个方法,就是把clist作为全局变量,在定义结构体时定义clist为其指针变量,这样clist的值就固定了.这样在insertclist()函数里的p=clist就有意义了!谢谢师兄提醒哈!

我来回复

您尚未登录,请登录后再回复。点此登录或注册