關於單鏈表的頭插法和尾插法


#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);  //輸出函數
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM