复制代码
#include<stdio.h>
#include<stdlib.h>
typedef int ElemType;
typedef struct LNode{
    ElemType data;
    struct LNode *next;    
}LNode,*LinkList;

//尾插法 
 LinkList List_TailInsert(LinkList &L)
 {
     ElemType x;
     L=(LinkList)malloc(sizeof(LNode));
     LNode *s,*r=L;
     printf("请输入单链表各个节点,以9999结束!\n"); 
     scanf("%d",&x);
     while(x!=9999)
     {
         s=(LNode*)malloc(sizeof(LNode));
         s->data=x;
         r->next=s;
         r=s;
         scanf("%d",&x);
             
     }
     
     r->next=NULL;
     
     return L;
    
  }
   int Length(LinkList L)
 {
     LNode *p=L;
     int count=0;
     while(p->next!=NULL)
     {
         p=p->next;
         count++;
     }
     return count;
     
 }
 
 //将带头结点的单链表A按序号奇偶分解到A或B中
 LinkList DisCreate_A_B(LinkList &A)
 {
     
     int i=0;
     LinkList B=(LinkList)malloc(sizeof(LNode));
     B->next=NULL;
     LNode *ra=A,*rb=B;//分别指向两个空链表 
     LNode *p=A->next;//标记A的真实节点数据 
     A->next=NULL;//断开A与后面元素的链接 
     while(p!=NULL)
     {
         i++;
         if(i%2==0)
         {
             
             rb->next=p;
             rb=p;
         }
         else
         {
             ra->next=p;
             ra=p;
         }
         
         p=p->next;
         
         
         
      } 
      ra->next=NULL;
      rb->next=NULL;
      return B;
      
  } 

  int main(){
    LinkList L;
    LinkList R,S;//接收输入数据和处理完的B 
    R=List_TailInsert(L);
    S=DisCreate_A_B(R);
    LNode *p=S;
    while(p->next!=NULL){
        p=p->next;
        printf("->%d",p->data);
        
    }
    
}
复制代码

 

posted on   upupup-999  阅读(138)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!



点击右上角即可分享
微信分享提示