| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 489 人关注过本帖
标题:一个建立链表的错误,帮忙看下 3Q
只看楼主 加入收藏
C_snow
Rank: 1
等 级:新手上路
帖 子:34
专家分:3
注 册:2010-2-18
结帖率:100%
收藏
已结贴  问题点数:16 回复次数:2 
一个建立链表的错误,帮忙看下 3Q
错误提示:

图片附件: 游客没有浏览图片的权限,请 登录注册


#include <stdio.h>
#include <stdlib.h>

typedef int elemtype;
typedef struct SLnode
{
 elemtype Data;
 SLnode *next;
}slnodetype;


int main()
{
 slnodetype *head;
 elemtype x;
 int n;
 int i;
 slnodetype *CreateSL(int n);
 void PrintSL(slnodetype *h);
 int InsertSL(slnodetype *h,int i,elemtype x);
 int DeleteSL(slnodetype *h,int i);

 scanf("%d",&n);
 head=CreateSL(n);
 PrintSL(head);
 printf("\n\n\n\n");
 printf("请输入你要插入的位置:\n");
 scanf("%d",i);
 if(InsertSL(head,i,x))
    PrintSL(head);
 printf("请输入你要删除的位置\n");
 scanf("%d",&i);
 if(DeleteSL(head,i))
    PrintSL(head);   
 getchar();
 
 return 0;
 }
 
 
slnodetype *CreateSL(int n)
 {
  int i;
  slnodetype *p,*s,*head;
  if((head=(slnodetype *)malloc(sizeof(slnodetype)))==NULL)
  {
  printf("不能分配空间!\n");
  exit(0);
  }
  head->next=NULL;
  p=head;
  for(i=0;i<n;i++)
  {
     if((s=(slnodetype *)malloc(sizeof(slnodetype)))==NULL)
     {
      printf("不能分配空间\n");
      exit(0);                  
     }
     p->next=s;
     s->next=NULL;
     p=s;
     scanf("%d",&(s->Data));
 
  }
  return (head);   
 }
 
 void PrintSL(slnodetype *h)
 {
  slnodetype *p1;
  p1=h;
  while(p1->next!=NULL)
  {
    p1=p1->next;
    printf("%d\n",p1->Data);   
  }
 }

int InsertSL(slnodetype *h,int i,elemtype x)
{
 slnodetype *p,*s;
 int j;
 p=h;
 j=0;
 while(p->next!=NULL&&j<i-1)
 {
  p=p->next;
  j++;                           
 }   
 if(j!=i-1)
 {
  printf("输入位置不合理\n");
  return 0;         
 }
 if((s=(slnodetype *)malloc(sizeof(slnodetype)))=NULL) return 0;
 scanf("%d",&x);
 s->Data=x;
 s->next=p->next;
 p->next=s;
 
 return 1;
}

int DeleteSL(slnodetype *h,int i)
{
 slnodetype *p,*s;
 int j=0;
 p=h;
 while(p->next->next!=NULL&&j<i-1)
 {
  p=p->next;
  j++;                              
 }   
 if(j!=i-1)
 {
  printf("删除位置不合理\n");         
 }
 s=p->next;
 p->next=p->next->next;
 free(s);
 return 1;
}
搜索更多相关主题的帖子: 链表 
2010-12-09 13:25
佳嘉
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:3
帖 子:534
专家分:1383
注 册:2009-11-8
收藏
得分:16 
第一个问题:
printf("请输入你要插入的位置:\n");
scanf("%d",i);这里有问题
if(InsertSL(head,i,x))

第二个问题:
 return 0;         
}
if((s=(slnodetype *)malloc(sizeof(slnodetype)))=NULL) return 0; 有问题
scanf("%d",&x);


2010-12-09 15:57
C_snow
Rank: 1
等 级:新手上路
帖 子:34
专家分:3
注 册:2010-2-18
收藏
得分:0 
3Q3Q3Q3Q3Q3Q3Q3Q3Q3Q3Q3Q3Q3Q3Q3Q3Q
2010-12-09 16:05
快速回复:一个建立链表的错误,帮忙看下 3Q
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012650 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved