2 qq 34378013 qq_34378013 于 2016.03.21 22:26 提问

关于C语言链表插入的问题
#include<stdio.h>
#include<stdlib.h>


struct node
{
    int num;
    int L;
    struct node *next;
};
typedef struct node LN;


LN *Creat(int n);
void print(LN *h);
void Revise(LN *p);


void main()
{
    LN *h;
    int a;
    printf("Input the sum of the number:");
    scanf("%d",&a);
    h=Creat(a);
    system("CLS");
    Revise(h);
    print(h);
}


LN *Creat(int n)
{
    LN *head;
    LN *p;
    LN *b;
    head=(LN *)malloc(sizeof(LN));
    head->next=NULL;
    b=head;
    for(int i=1;i<=n;i++)
    {
        printf("Input the %d number:",i);
        p=(LN *)malloc(sizeof(LN));
        scanf("%d",&p->num);
        b->next=p;
        b=p;
        p->L++;
    }
    system("CLS");
    p->next=NULL;
    return head;
}


void print(LN *h)
{
    LN *p;
    p=h->next;
    while(p)
    {
        printf("%d\n",p->num);
        p=p->next;
    }
}


void Revise(LN *p)
{
    LN *a;
    LN *b;
    int n;
    int i=0;
    int data;
    printf("Input which node you want to insert:");
    scanf("%d",&n);
    printf("Please input the data:");
    scanf("%d",&data);                                 
    while (i<n-1)
    {
        p=p->next;
        i++;
    }
    a=(LN *)malloc(sizeof(LN));
    b=(LN *)malloc(sizeof(LN));
    p->num=data;
    a=p->next;
    p->next=b;
    b->next=a;      
}


其中在链表插入当中插入错误,插入节点是对的,但是数就是错的。

2个回答

caozhy
caozhy   Ds   Rxr 2016.03.21 22:36

void Revise(LN *p)
{
    LN *a;
    LN *b;
    int n;
    int i=0;
    int data;
    printf("Input which node you want to insert:");
    scanf("%d",&n);
    printf("Please input the data:");
    scanf("%d",&data);                                 
    while (i<n)
    {
        p=p->next;
        i++;
    }
    a=(LN *)malloc(sizeof(LN));
    a->num=data;
    a->next=p->next;
    p->next=a;
}

caozhy
caozhy 回复qq_34378013: 问题解决请点下我回答右边的采纳,谢谢
2 年多之前 回复
qq_34378013
qq_34378013 太感谢 知道错在哪儿了
2 年多之前 回复
caozhy
caozhy   Ds   Rxr 2016.03.21 22:40

另外你的名字叫Revise,但是函数功能是插入节点,不是反转,这点请注意。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
YTU 2430: C语言习题 链表建立,插入,删除,输出
2430: C语言习题 链表建立,插入,删除,输出 时间限制: 1 Sec  内存限制: 128 MB 提交: 576  解决: 280 题目描述 编写一个函数creatlink,用来建立一个动态链表。(包含学号和成绩) 编写一个函数printlink,用来输出一个链表。 编写一个函数dellink,用来删除动态链表中一个指定的结点(由实参指定某一学号,表示要删除该学生
C语言实现单向链表的创建、插入,删除节点,和2个链表合并
VC6.0下 用C语言实现单向链表的创建、插入,删除节点,和2个链表合并等操作
C语言习题 链表建立,插入,删除,输出
#include #include using namespace std; struct student {int num,score; student *p; }; student *creatlink(void) { student *head,*p; head=new student; p=head; while(1) {cin>>(*p).num>
常见算法:C语言中链表的操作(创建,插入,删除,输出)
链表中最简单的一种是单向链表,它包含两个域,一个信息域和一个指针域。这个链接指向列表中的下一个节点,而最后一个节点则指向一个空值。 一个单向链表包含两个值: 当前节点的值和一个指向下一个节点的链接 一个单向链表的节点被分成两个部分。第一个部分保存或者显示关于节点的信息,第二个部分存储下一个节点的地址。单向链表只可向一个方向遍历。 链表最基本的结构是在每个节点保存数据和到下一个节点的地址,
C语言实现链表之单向链表(七)尾结点后插入结点
C语言实现链表之单向链表(七)尾结点后插入结点     上一篇文章给出了删除头结点的函数,本篇文章将给出在尾结点后插入结点的函数。 /*============================================================================== * 操作 :在尾结点之后加入一个新结点 * 操作前:pHeadNode为链
C语言实现链表的插入、删除、查询操作
前言本程序是数据结构上机实验内容,参考《数据结构(C语言版)》(清华大学出版社)中链表部分的伪代码实现。题目要求 设计链表结构体 建立一个链表,并录入n个原始数据 实现向链表中指定位置插入数据的功能 实现删除链表中指定位置的数据的功能 实现获取链表中指定位置的数据的功能 使用malloc函数动态分配内存地址 实例代码及说明#include <stdio.h> #include <stdlib.h>#
C语言链表插入排序
C语言链表插入排序 大家好,我就是人见人爱 花见花开车见爆胎的小智 声音依旧是那么低沉切性感,现在又来给大家更新博客的第一视角了。 这期给大家介绍的是链表的插入排序。 具体代码如下: struct Student *Sort(struct student *h) { struct student *ptemp=h,*phead,*q,*r,*t; phead=(struct st
C语言实现链表的创建,初始化,插入,删除,查找
#include #include #define OK 0 #define ERROR -1 #define MALLOC_ERROR -2 typedef int ElementType; typedef struct node { ElementType data; // 结点的数据 struct node *next; // 结点
单链表插入和删除结点c语言的实现
个人学习的一些笔记,如果有误,希望指正
单链表常见习题及C语言实现(持续更新)
这两天在学习单链表,遇到了一些问题,在这里加以整理记录,以便复习0.单链表的反序 (solved)1.求单链表倒数第N个数(solved)3.求中间结点 (solved)3.给单链表建环 (solved)4.检测单链表是否有环 (solved)5.给单链表解环6.检测两条链表是否相交 (solved)7.不输入头节点,删除单链表的指定节点(只给定待删除节点指针)0.单链表的反序 (solved) s