| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 475 人关注过本帖
标题:运行不到插入的子函数?大神讲解下,那里出错了!!
只看楼主 加入收藏
HUSKY001
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2014-11-11
结帖率:66.67%
收藏
已结贴  问题点数:10 回复次数:6 
运行不到插入的子函数?大神讲解下,那里出错了!!
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
int i;
typedef struct LNode
{
    int data;
    struct LNode *next;
}LNode,*LinkList;      //结构体类型定义
void Insert_list(LinkList L,int m)
{
    LinkList p=L,s;
    while(p=!NULL)
    {
        
        if(m>=p->data)
        {
            s=(LinkList)malloc(sizeof(LNode));
            s->data=m;
            s->next=p->next;
            p->next=s;
            
        }
        
    }
   
   
}      //把m插入到表中合适位置
void Del_list(LinkList L,int x,int y)
{
    LinkList p=L,q=L->next;
    while(p!=NULL)
    {
        if(q->data>=x&&q->data<=y)
        {
            p=p->next;
            q=q->next;
        }
        else
        {
            p->next=p->next->next;
            free(q);
            q=p->next;
        }
    }
   
}      //删除表中大于x小于y的所有元素
LinkList CreateList_L(LinkList L, int n)
{
    LinkList p;
    L=(LinkList)malloc(sizeof(LNode));
    L->next=NULL;
    p=L;
    printf("请输入你要输入的数的个数\n");
    scanf("%d",&n);
    for(i=n;i>0;i--)
    {
        p=(LinkList)malloc(sizeof(LNode));
        printf("请输入第%d个数\n",n-i+1);
        scanf("%d",&p->data);
        p->next=L->next;
        L->next=p;
    }
    return L->next;
}      //建立一个含有n个元素的有序递增单链表
void print_L(LinkList L)
{
    LinkList p=L;
    while(p!=NULL)
    {
        printf("%d",p->data);
        p=p->next;
    }   //输出
    printf("\n");
}    //输出单链表中元素
void main()
{
    int n,m,x,y;
    LinkList S,L;   //定义实参
    L=CreateList_L(S,n) ;    //创建
    print_L(L);//输出
    printf("请输入要插入的数\n");
    scanf("%d",&m);
    printf("%d\n",m);//输入m的值
    Insert_list(L,m);   //插入
    print_L(L);     //输出
    printf("请输入删除数据的范围x和y\n");
    scanf("%d%d",&x,&y);//输入x和y的值
    Del_list (L,x,y);    //删除
    print_L(L);     //输出
}
搜索更多相关主题的帖子: include include 结构体 结构体 
2015-04-12 14:09
HUSKY001
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2014-11-11
收藏
得分:0 
不要沉啊  
帮帮忙
2015-04-12 14:09
无功
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:44
专家分:168
注 册:2015-4-12
收藏
得分:4 
好像有很多的应该用指针,但是没有*
2015-04-12 14:30
HUSKY001
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2014-11-11
收藏
得分:0 
哦,我再看看
2015-04-12 15:36
jklqwe111
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:35
帖 子:336
专家分:1135
注 册:2014-4-13
收藏
得分:4 
插入函数有些问题,你的原意应该是遍历链表,但缺一句代码,p=p->next;  另外,在插入节点之后应该有终止循环的代码,break;  删除函数中第一个节点的数据被遗漏。
2015-04-12 17:16
HUSKY001
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2014-11-11
收藏
得分:0 
回复 5楼 jklqwe111
我再试试,谢谢额
2015-04-12 18:05
z_j_j_1
Rank: 4
等 级:业余侠客
威 望:1
帖 子:62
专家分:213
注 册:2015-4-4
收藏
得分:4 
回复 楼主 HUSKY001
(1)void Insert_list(LinkList L,int m) 函数中的
while(p=!NULL)   ,这个语句错了,应该改成
:while(p!=NULL)

(2)
符合插入条件时 插入节点后应该用break;
不符合插入条件时 应该用p=p->next;

[ 本帖最后由 z_j_j_1 于 2015-4-14 10:24 编辑 ]
2015-04-14 09:38
快速回复:运行不到插入的子函数?大神讲解下,那里出错了!!
数据加载中...
 
   



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

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