| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1861 人关注过本帖
标题:关于在头部插入结点的问题
取消只看楼主 加入收藏
bjut_Allen
Rank: 9Rank: 9Rank: 9
来 自:平乐园工业技术学校
等 级:蜘蛛侠
威 望:8
帖 子:323
专家分:1223
注 册:2016-10-16
结帖率:95.45%
收藏
已结贴  问题点数:5 回复次数:5 
关于在头部插入结点的问题
截取了插入函数,在中间和结尾可以插入,但是头部不行,哪有问题。
链表中数据是按从小到大排列的

NODE* insert_sort(NODE* h, int x)
{
      NODE *p,*q,*s;
      p=h;
      q=p;
      int i;
      s=(NODE*)malloc(sizeof(NODE));
      s->data=x;
      if(x<p->data)    //在头部插入不能成功
      {
          s->next=p;
          h=s;
          return h;
      }
      for(i=0;i<NUM-1;i++)     //在中间插入
      {
          p=p->next;
         if(x<p->data)
         {
            s->next=q->next;
            q->next=s;
            break;
         }
         else
                 q=p;
      }
      if(x>p->data)    //在尾部插入
      {
          p->next=s;
      s->next=NULL;
      }  
      return h;
}
搜索更多相关主题的帖子: return 
2016-12-10 13:52
bjut_Allen
Rank: 9Rank: 9Rank: 9
来 自:平乐园工业技术学校
等 级:蜘蛛侠
威 望:8
帖 子:323
专家分:1223
注 册:2016-10-16
收藏
得分:0 
回复 4楼 九转星河
如果x=p->data可以插到第一个结点后面

Code is my life.
2016-12-10 14:27
bjut_Allen
Rank: 9Rank: 9Rank: 9
来 自:平乐园工业技术学校
等 级:蜘蛛侠
威 望:8
帖 子:323
专家分:1223
注 册:2016-10-16
收藏
得分:0 
整个贴出来

#include <stdio.h>
#include <stdlib.h>
#define NUM 6
typedef struct node{
    int data;
    struct node *next;
}NODE;
NODE* create_rear(int a[], int n);
NODE* insert_sort(NODE* h, int x);
void output(NODE *h);
int main()
{
    int a[NUM];
    int i,x;
    NODE *h;
    printf("输入数组6个元素的值。");
    for(i=0;i<NUM;i++){
     scanf("%d",&a[i]);
    }
    h=create_rear(a,NUM);
    printf("此链表各个结点的数据域为:");
    output(h);
    printf("\n输入要插入的数据x:");
    scanf("%d",&x);
    insert_sort(h,x);
    printf("插入后链表各个结点的数据域为:");
    output(h);
    return 0;
}
NODE* create_rear(int a[], int n)
{
     NODE *h=NULL,*p,*q;
     int i;
     for(i=0;i<NUM;i++)
     {
     p=(NODE*)malloc(sizeof(NODE));
     p->data=a[i];
        if(h==NULL)
        {
           h=p;
           q=p;
        }
        else
        {
           q->next=p;
           q=p;
        }
     }
     q->next=NULL;
     return h;
}
void output(NODE *h)
{
    NODE *p;
    p=h;
    while(p!=NULL)
    {
       printf("%4d",p->data);
       p=p->next;
    }
}
NODE* insert_sort(NODE* h, int x)
{
      NODE *p,*q,*s;
      p=h;
      q=p;
      int i;
      s=(NODE*)malloc(sizeof(NODE));
      s->data=x;
      if(x<p->data)
      {
          s->next=p;
          h=s;
          return h;
      }
      for(i=0;i<NUM-1;i++)     //在中间插入
      {
          p=p->next;
         if(x<p->data)
         {
            s->next=q->next;
            q->next=s;
            break;
         }
         else
                 q=p;
      }
      if(x>p->data)    //在尾部插入
      {
          p->next=s;
      s->next=NULL;
      }
      return h;
}

Code is my life.
2016-12-10 14:43
bjut_Allen
Rank: 9Rank: 9Rank: 9
来 自:平乐园工业技术学校
等 级:蜘蛛侠
威 望:8
帖 子:323
专家分:1223
注 册:2016-10-16
收藏
得分:0 
回复 7楼 九转星河
对对对!!!!

Code is my life.
2016-12-10 17:44
bjut_Allen
Rank: 9Rank: 9Rank: 9
来 自:平乐园工业技术学校
等 级:蜘蛛侠
威 望:8
帖 子:323
专家分:1223
注 册:2016-10-16
收藏
得分:0 
回复 8楼 吹水佬
受教了

Code is my life.
2016-12-10 17:45
bjut_Allen
Rank: 9Rank: 9Rank: 9
来 自:平乐园工业技术学校
等 级:蜘蛛侠
威 望:8
帖 子:323
专家分:1223
注 册:2016-10-16
收藏
得分:0 
回复 11楼 吹水佬
对对对对

Code is my life.
2016-12-10 21:08
快速回复:关于在头部插入结点的问题
数据加载中...
 
   



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

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