关于单链表的头插法和尾插法

#include<stdio.h>
#include<stdlib.h>
 typedef struct Node {         //        定义的链表类型
   int data;
   struct Node *next;
   }LNode , *Linklist;

   void print(Linklist L){        //这是一个将链表数据输出的函数
    Linklist tem=L;         
    while(tem->next !=NULL){
        tem = tem->next;
        printf("%d\n",tem->data);
    }
}

void creat(Linklist &L){               // 头插法
  L = (Linklist)malloc (sizeof(LNode));
  Linklist p;                                   //定义一个
  L->next=NULL;       
  p= L->next;
  int i,n;
  printf("Input the node number:");
  scanf("%d",&n);
  for(i=0;i<n;i++){
        p=(Linklist)malloc(sizeof(LNode));
        scanf("%d",&p->data);

          p->next = L->next;
          L->next = p;
  }
}
void tail(Linklist &L){
   L= (Linklist)malloc(sizeof(LNode));
   Linklist end,p;
   L->next = NULL;
   end= L;
   int i,n;
   printf("Input the LNode number:");
   scanf("%d",&n);
   for(i=0;i<n;i++){
    p = (Linklist)malloc(sizeof(LNode));
    scanf("%d",&p->data);
    end->next = p;
    end = p;
   }
   end->next = NULL;

}

void merge(Linklist &La,Linklist &Lb,Linklist &Lc ){
  Linklist pa,pb,pc;
  pa=La->next; pb=Lb->next;
  Lc=pc=La;
  while(pa&&pb){
    if(pa->data<pb->data)  {pc->next=pa;pc=pa;pa=pa->next;}
    else {pc->next=pb;pc=pb;pb=pb->next;}
  }
  pc->next=pa?pa:pb;
  free(Lb);     // 链表中的合并元素
}

main(){
  Linklist L= NULL;
  creat(L);
  print(L);  //输出函数
}

posted @ 2019-03-22 19:39  小七啊  阅读(2106)  评论(0编辑  收藏  举报