| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 449 人关注过本帖
标题:链表的问题
只看楼主 加入收藏
黄色海岸2009
Rank: 1
等 级:新手上路
帖 子:38
专家分:2
注 册:2009-11-7
结帖率:87.5%
收藏
已结贴  问题点数:20 回复次数:7 
链表的问题
题目要求是先建一个非负递减的链表 然后往里面插入数据,当要插入的数据与当前某数据相同时
返回-1(怎么也实现不了)
要求用函数 int insertElement(int value)
我的程序如下
#include<stdio.h>
#include<stdlib.h>
typedef struct slist
{
 int data;
 struct slist *next;
}Linklist,*Node;
Node creat(void)
{
 Linklist *head;
 head=(Linklist*)malloc(sizeof(Linklist));
 return(head);
}
int insertElement(int value)
{
  Linklist *p0,*p1,*p2,*head;
  head=NULL;
  int k;
  p2=p1=head;
  p0=(Linklist*)malloc(sizeof(Linklist));
  p0->data=value;
  if(head!=NULL)
  {
    while(p1->next!=NULL)
  {
    if(p1->data==p0->data){ k=-1;break;}
    else if(p1->data < p0->data)
   {
     if(head==p1) head=p0;
     else p2->next=p0;
     p0->next=p1;k=p0->data; break;
    }
    else
   p2=p1;
   p1=p1->next;
   }
}
}
int main()
{
 Linklist *p,*head;
 printf("insert:47 %d\n",insertElement(47));
 printf("insert:47 %d\n",insertElement(47));
 printf("insert:38 %d\n",insertElement(38));
}

我是C语言菜鸟 肯定有很多错误在里面
哪位大侠给我详细讲讲啊
我在线等!!!!!
搜索更多相关主题的帖子: 链表 
2009-11-07 21:10
黄色海岸2009
Rank: 1
等 级:新手上路
帖 子:38
专家分:2
注 册:2009-11-7
收藏
得分:0 

2009-11-07 21:28
jackwain
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:168
专家分:134
注 册:2009-3-21
收藏
得分:10 
typedef struct node
{
int num;
struct node *link;
}Node;
int sll_insert(Node **rootp,int value)
{
  Node *current;//目前结点
  Node *previous;//前驱
  Node *new_node;//新结点
  current=*rootp;//得到第一个结点
  previosu=NULL; //初始化前驱
  while(current!=NULL&&current->num)
   {
   if(current->num==value)
    {return -1;                                 
    }
    previous=current;//保留前一个结点
    current=current->link;//遍历下这个链表
   }
  //创建新结点
  new_node=(Node *)malloc(sizeof(Node));
  if(!new_node)
  {
  fprintf(stderr,"new_node malloc error.\n");
   exit(1);            
  }
  new_node->link=current;//current 不是空就是current->num的值比value大  所以新结点的值就插入current结点之前,否则在后
  new_node->num=value;//赋值
  if(!previous)//如果前驱结点为空。那么新结点就是新头结点
   {
    *rootp=new_node;            
   }
  else
  previous->link=new_node;//链接新结点
 }

给个参考。
2009-11-07 21:29
黄色海岸2009
Rank: 1
等 级:新手上路
帖 子:38
专家分:2
注 册:2009-11-7
收藏
得分:0 
谢谢楼上啦
2009-11-07 21:29
黄色海岸2009
Rank: 1
等 级:新手上路
帖 子:38
专家分:2
注 册:2009-11-7
收藏
得分:0 
不过问题还没解决 继续问
2009-11-07 21:31
jackwain
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:168
专家分:134
注 册:2009-3-21
收藏
得分:10 
整个链表创建错误~
首先你插入一个值
调用一次

再插入一个值
再同样调用一次
同样的操作

输出也错误
还是好好看看书先吧
2009-11-07 21:42
黄色海岸2009
Rank: 1
等 级:新手上路
帖 子:38
专家分:2
注 册:2009-11-7
收藏
得分:0 
那要怎样创建和插入呢 我看了书了 还是不会啊 没学过 自学的
2009-11-07 21:45
黄色海岸2009
Rank: 1
等 级:新手上路
帖 子:38
专家分:2
注 册:2009-11-7
收藏
得分:0 
我就是搞不清楚创建链表和后来插入数值时insert如何调用creat
2009-11-07 21:49
快速回复:链表的问题
数据加载中...
 
   



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

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