国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

合并兩個帶頭結點的有序循環(huán)鏈表合并為一個帶頭結點的有序循環(huán)鏈表

2019-11-17 05:37:01
字體:
來源:轉載
供稿:網(wǎng)友
#include<stdio.h>   //預編譯命令
#include<iostream.h>
strUCt list//定義結構體
{
 int num;
 list*next;
};
list*head,*end;         //定義全局變量list*creat()//創(chuàng)建鏈表的函數(shù)
{
 list*p=NULL;
 list*q=NULL;
 head=NULL;
 int num;
  scanf("%d",&num);
 while(num!=0)
 {
  p=new list;      //開辟空間
  p->num=num;
  if(head==NULL)
   head=p;
  else
   q->next=p;
  q=p;
  scanf("%d",&num);
 }
 end=q;   //將鏈表的結尾最后一個結點賦給end
 end->next=head;  //讓最后一個結點的的下個結點的地址不為空而指向頭指針
 return(head);
}void print(list*head)//打印循環(huán)鏈表的函數(shù)
{
 int k=0;
 list*r=head;
 do
 {
  cout.width(2);
  k=k+1;
  cout<<k<<":"<<r->num<<endl;
  r=r->next;
 }while(r!=head);
}void insert(list*pHead,list*pNode)   //插入接點的函數(shù)
{
 list*q,*r;
 //第一種情況,鏈表為空
 if(pHead==NULL)
 {
  pHead=pNode;    //鏈表頭指向pNode
  return;      //完成插入操作,返回
 } //第二種情況,pNode結點num的值小于鏈表頭結點num的值
 //則將pNode的值插到鏈表頭部
 if(pNode->num<=pHead->num)
 {
  pNode->next=pHead;   
  pHead=pNode;    
  return;
 }
 //第三種情況,循環(huán)查找正確位置
 r=pHead;
 q=pHead->next;
 while(q!=pHead)
 {
  if(pNode->num>q->num)
  {
   r=q;
   q=q->next;
  }
  else
   break;
 }
 r->next=pNode;
 pNode->next=q;
}list*together(list*p1,list*p2)      //定義兩個鏈表合并的函數(shù)
{
 list*q,*r;
 q=p2;
 
 do
 {
  r=new list;   //開辟空間
  r->num=q->num;  //將q的值賦給r
  r->next=NULL;       //讓r的下一個指針的地址為空,目的是使它成為一個獨立的結點
  insert(p1,r);  //調用插入結點的函數(shù)
  q=q->next;   //指針向后撥一個接點
 }while(q!=p2);   //當在最后一個結點時停止循環(huán)
 return(p1);    //返回頭指針
}void main()   //主函數(shù)
{
 list*list1,*list2;
 printf("Input list1/n");
 printf("If number is 0,stop inputing/n");
 printf("數(shù)據(jù)請從小到大輸入/n");
 list1=creat();    //調用創(chuàng)建鏈表的函數(shù)
 print(list1);    //打印第一個鏈表

 printf("Input list2/n");
 printf("If number is 0,stop inputing/n");
 printf("數(shù)據(jù)請從小到大輸入/n");
 list2=creat();   //調用創(chuàng)建鏈表的函數(shù)
 print(list2);   //打印第二個循環(huán)鏈表 head=together(list1,list2);    //調用合并兩個鏈表的函數(shù)
 printf("The new list is:/n");
 print(head);       //打印最后結果
}


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 白城市| 黄冈市| 公主岭市| 贵溪市| 万宁市| 娄烦县| 广元市| 双柏县| 洪江市| 拜城县| 尼木县| 诸城市| 河西区| 包头市| 雅安市| 巢湖市| 精河县| 石门县| 泽州县| 绍兴市| 南通市| 黄浦区| 安泽县| 长沙县| 涪陵区| 肃北| 左权县| 全椒县| 西城区| 肥西县| 嘉兴市| 玛曲县| 阿拉善盟| 进贤县| 天长市| 天全县| 乌兰县| 辉南县| 客服| 类乌齐县| 南澳县|