| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1413 人关注过本帖
标题:链表中怎么插入结点
只看楼主 加入收藏
bjut_Allen
Rank: 9Rank: 9Rank: 9
来 自:平乐园工业技术学校
等 级:蜘蛛侠
威 望:8
帖 子:323
专家分:1223
注 册:2016-10-16
结帖率:95.45%
收藏
已结贴  问题点数:5 回复次数:4 
链表中怎么插入结点
我想问在第n个(例如第4个)结点前插入一个结点,怎么用循环把指针p指到该位置
具体问题在注释

#include <stdio.h>
#include <stdlib.h>
typedef struct node{
    int data;
    struct node *next;
}NODE;
NODE *input(void);
void output(NODE *head);
int insert(NODE *head,int index,int data);
int main()
{
    NODE *head;
    head=input();
    output(head);
    printf("Insert a node\n");
    int index,data;
    printf("Enter insert index and data:");
    scanf("%d%d",&index,&data);
    insert(head,index,data);
    output(head);
    return 0;
}
NODE *input(void)
{
    int n;
    NODE *head=NULL,*p,*q;
    scanf("%d",&n);
    while(n!=0){
    p=(NODE*)malloc(sizeof(NODE));
    if(p==NULL)
    return NULL;
    p->data=n;
    if(head==NULL){
        head=p;
        q=p;
        
    }
    else
    {
        q->next=p;
        q=p;

    }
    scanf("%d",&n);
    }
    q->next=NULL;
   return head;   
}
void output(NODE *head)
{
    NODE *p;
    p=head;
    if(p==NULL)
    {
        printf("NULL!");
    }
    else
    do{
        printf("%d\t",p->data);
        p=p->next;
    }while(p!=NULL);
}
int insert(NODE *head,int index,int data)
{
    NODE *s, *p=head;
    int j=0;                           
    while(   )         //寻找第i-1结点,循环条件怎么写??
     {
     p=p->next;
    }            
    if(    )          //未找到时,错误条件怎么写
        return -1;         
    s=(NODE*)malloc(sizeof(NODE));   
    s->data=data;  
    s->next=p->next;
    p->next=s;
    return 0;
}

[此贴子已经被作者于2016-12-4 16:33编辑过]

搜索更多相关主题的帖子: include insert Enter 
2016-12-04 16:28
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:5 
设置循环次数,用循环变量控制循环次数~没有找到时此时指针已经指向尾部之后的NULL,可以根据这个进行判断有没有找到节点

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2016-12-04 16:32
bjut_Allen
Rank: 9Rank: 9Rank: 9
来 自:平乐园工业技术学校
等 级:蜘蛛侠
威 望:8
帖 子:323
专家分:1223
注 册:2016-10-16
收藏
得分:0 
回复 2楼 九转星河
明白,假设可以找到要插入结点位置,那么一定是在最后一次循环中找到的,对吗?

Code is my life.
2016-12-04 16:35
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
回复 3楼 bjut_Allen
可以这样理解,循环最后一次指针位置就是节点位置,如果指针已经指向NULL,而又不是最后一次循环,那就没有找到节点位置并终止循环

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2016-12-04 16:41
bjut_Allen
Rank: 9Rank: 9Rank: 9
来 自:平乐园工业技术学校
等 级:蜘蛛侠
威 望:8
帖 子:323
专家分:1223
注 册:2016-10-16
收藏
得分:0 
回复 4楼 九转星河
谢啦!

Code is my life.
2016-12-04 17:34
快速回复:链表中怎么插入结点
数据加载中...
 
   



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

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