| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 915 人关注过本帖
标题:新手求助单链表实现问题
只看楼主 加入收藏
xuesesu27
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2008-2-28
收藏
 问题点数:0 回复次数:2 
新手求助单链表实现问题
请高手帮忙看看这个关于单链表的程序有什么错误,在用vc++编译时在CreateList处总有个warning:not all control paths return a value.
以下是程序:

#include"stdio.h"
#include"stdlib.h"
typedef struct node{
    int elem;
    struct node *next;
}Node,*Linklist;
 

Linklist CreateList( int n)
{ Linklist pf1,p;
  int i=0;
    p=(Linklist)malloc(sizeof(struct node));
    p->next=NULL;
  for(i=n;i>0;--i)
  { pf1=(Linklist)malloc(sizeof(struct node));
    printf("请输入%d个元素值",n);
    scanf("%d",pf1->elem);
    pf1->next=p->next;
    p->next=pf1;
    
    return p;

  }
}
  Linklist ListInsert(Linklist p,int i,int e)
{ Linklist pf1,pf2;
  int j=0;
  pf1=p;

  while(pf1 && j<i-1)
  { pf1=pf1->next;
    j++;
  }
  if(!pf1||j>i-1)
printf("插入失败\n");
  pf2=(Linklist)malloc(sizeof(struct node));
  pf2->elem=e;
  pf2->next=pf1->next;
  pf1->next=pf2;
  return p;
}
 Linklist ListDelete(Linklist p,int i,int *e)
{ Linklist pf1,pf2;
  int j=0;
  pf1=p;
  while(pf1->next&&j<i-1)
  { pf1=pf1->next;
    j++;
  }
  if(!p->next||j>i-1)
  printf("删除失败\n");
   pf2=pf1->next;
   pf1->next=pf2->next;
   *e=pf2->elem;
   free(pf2);
   return p;
}
ListTraverse(Linklist p)
{ Linklist pf;
  pf=p;
  while(!pf)
  {   printf("输出链表\n");
      printf("%d",pf->elem);
   pf=pf->next;
  }
  printf("\n");
}  
main()
{ Linklist L;
  int n1=0,n2=0,n3=0,m1=0,m2=0;
  printf("请输入你想建立的链表长度\n");
  scanf("%d",&n1);
  L=CreateList(n1 );
  ListTraverse(L);
  printf("你想在第几个节点前插入新节点?\n");
  scanf("%d",&n2);
  printf("此节点的元素值是?\n");
  scanf("%d",&m1);
  L=ListInsert(L,n2,m1);
  ListTraverse(L);
  printf("你想删除第几个节点?\n");
  scanf("%d",&n3);
  L=ListDelete(L,n3,&m2);
  printf("被删除节点的元素值是:%d",m2);
  ListTraverse(L);
}
初学数据结构,写的不好,请高手请教。

[[it] 本帖最后由 xuesesu27 于 2008-3-8 22:14 编辑 [/it]]
搜索更多相关主题的帖子: 单链 
2008-03-07 20:25
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
#include"stdio.h"
#include"stdlib.h"
typedef struct node
{
    int elem;
    struct node *next;
}Node,*Linklist;




Linklist CreateList( int n)
{ Linklist pf1,p,head;
    int i=0;
    p=(Linklist)malloc(sizeof(struct node));
    head=p;
    printf("请输入第%d个元素值:\n",0);
    scanf("%d",&p->elem);
    fflush(stdin);
    p->next=NULL;
  for(i=1;i<n;i++)
  {
    pf1=(Linklist)malloc(sizeof(struct node));
    printf("请输入第%d个元素值:\n",i);
    scanf("%d",&pf1->elem);
    fflush(stdin);
    p->next=pf1;
    p=pf1;  

  }
  p->next=NULL;
  return head;
}
  Linklist ListInsert(Linklist p,int i,int e)
{ Linklist pf1,pf2;
  int j=0;
  pf1=p;

  while(pf1 && j<i-1)
  { pf1=pf1->next;
    j++;
  }
  if(!pf1||j>i-1)
  printf("插入失败\n");
  pf2=(Linklist)malloc(sizeof(struct node));
  pf2->elem=e;
  pf2->next=pf1->next;
  pf1->next=pf2;
  return p;
}
Linklist ListDelete(Linklist p,int i,int *e)
{ Linklist pf1,pf2;
  int j=0;
  pf1=p;
  while(pf1->next&&j<i-1)
  { pf1=pf1->next;
    j++;
  }
  if(!p->next||j>i-1)
  printf("删除失败\n");
   pf2=pf1->next;
   pf1->next=pf2->next;
   *e=pf2->elem;
   free(pf2);
   return p;
}
void ListTraverse(Linklist p)
{ Linklist pf;
  pf=p;
  while(pf)
  {   printf("输出链表\n");
      printf("%d",pf->elem);
      pf=pf->next;
  }
  printf("\n");
}  
void main()
{ Linklist L;
  int n1=0,n2=0,n3=0,m1=0,m2=0;
  printf("请输入你想建立的链表长度\n");
  scanf("%d",&n1);
  L=CreateList(n1 );

  ListTraverse(L);
  printf("你想在第几个节点前插入新节点?\n");
  scanf("%d",&n2);
  printf("此节点的元素值是?\n");
  scanf("%d",&m1);
  L=ListInsert(L,n2,m1);
  ListTraverse(L);
  printf("你想删除第几个节点?\n");
  scanf("%d",&n3);
  L=ListDelete(L,n3,&m2);
  printf("被删除节点的元素值是:%d",m2);
  ListTraverse(L);
}

学习需要安静。。海盗要重新来过。。
2008-03-09 10:00
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
不想改了..你自己看看啊..还有点小问题..就是删除和插入都是在指定结点后面...

学习需要安静。。海盗要重新来过。。
2008-03-09 10:02
快速回复:新手求助单链表实现问题
数据加载中...
 
   



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

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