| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2374 人关注过本帖
标题:程序总是崩溃 合并单链表
取消只看楼主 加入收藏
ZQVVVVV
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2016-1-8
结帖率:66.67%
收藏
已结贴  问题点数:8 回复次数:0 
程序总是崩溃 合并单链表
#define ElemType int/*线性表内数据类型定义为整形 */
#define ERROR
#define OK
#include<stdio.h>
#include<stdlib.h>

typedef struct Node
{ElemType data;
struct Node* next;
 
}Node,* LinkList; /*链表的结构体建立&命名*/

InitList(LinkList* L)
{
*L=(LinkList)malloc(sizeof(Node));
(*L)->next==NULL;
}

void PriList(LinkList L)/*输出线性表内容的函数*/
{
LinkList p;
printf("\n链表内容为\n");
p=L->next;
 while(p->next!=NULL)
    {
        p=p->next;
        printf("%d\n",p->data);
    }   
}
 
void PriList1(LinkList L)/*输出线性表内容的函数*/
{
LinkList p;
printf("\n链表内容为\n");
p=L;
 while(p->next!=NULL)
    {
        printf("%d\n",p->data);
        p=p->next;
    }   
}
 LinkList CreatFromTail(LinkList L)
{
free(L);
Node* r,* s;
r=L->next;
int flag=1;
int c;
printf("结束时请输入1000请输入\n");
 while(flag)
  {
    scanf("%d",&c);
    if(c!=1000)
    {
        s=(Node*)malloc(sizeof(Node));
        s->data=c;
        r->next=s;
        r=s;
    }
   else
     {
    flag=0;
    r->next=NULL;

     }
  }
  return(L);
}

void RelectSortRiseList(LinkList L)
{  
    Node *first,*tail,*p,*pr,*min;
    first=NULL;
    while(L!=NULL)//当所有节点排序后都会脱离原来的链表,都脱离后原链表为空 结束循环
    {
        for(p=L,min=L;p->next!=NULL;p=p->next)
     {
        if(p->next->data<min->data)
        {
        pr=p;
        min=p->next;//p->next是最小值所在的节点。   
        }
     } //for循环是为找到最小值所在的节点
     if(first==NULL)
     {
         first=min;
         tail=min;
      } //有序链表中无节点时。
      else
      {
          tail->next=min;
          tail=min;
      }//if结构是为让最小值节点插入有序链表中
      if(min==L)
      {
          L=L->next;
       } //找到的最小节点是首节点时
       else
       {
           pr->next=min->next;
        } //if结构是为了让最小值节点脱离原来的链表
   }
   if(first!=NULL)
   {
       tail->next=NULL;
   }
   L=first;
   
 }
 
LinkList MergeLinkList()
{
    LinkList pa,pb,r;
    LinkList LC,LA,LB;
    InitList(&LC);
    InitList(&LA);
    printf("请建立链表LA\n");
    LA=CreatFromTail(LA);
    printf("\n请建立链表LB\n");  
    LB=CreatFromTail(LB);
    RelectSortRiseList(LA);
    RelectSortRiseList(LB);
    pa=LA->next;
    pb=LB->next;
    LC=LA;
    LC->next=NULL;
    r=LC;
    while(pa!=NULL&&pb!=NULL)
    {
   
        if(pa->data<=pb->data)
        {
            
            r->next=pa;r=pa;pa=pa->next;
        }
        else
        {
            r->next=pb;r=pb;pb=pb->next;
         }
         
    }
   
        if(pa==NULL)
         {
         r->next=pa;
          }
         else
         r->next=pb;
    PriList(LC);
         free(LB);
         return (LC);     
   
}
 
 
int main()
{
LinkList L,L1;
InitList(&L);
InitList(&L1);
 L1=MergeLinkList();
 return 0;
 }   
搜索更多相关主题的帖子: include 结构体 线性表 
2016-10-05 17:13
快速回复:程序总是崩溃 合并单链表
数据加载中...
 
   



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

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