欧美大屁股bbbbxxxx,狼人大香伊蕉国产www亚洲,男ji大巴进入女人的视频小说,男人把ji大巴放进女人免费视频,免费情侣作爱视频

歡迎來到入門教程網(wǎng)!

C語言

當(dāng)前位置:主頁 > 軟件編程 > C語言 >

C++雙向循環(huán)列表用法實例

來源:本站原創(chuàng)|時間:2020-01-10|欄目:C語言|點擊: 次

本文實例講述了C++雙向循環(huán)列表用法。分享給大家供大家參考。具體如下:

/* 
 雙向循環(huán)鏈表 
*/
#include <iostream>
using namespace std;
//結(jié)構(gòu)體構(gòu)造鏈表的指針域和數(shù)據(jù)域
struct ChainNode
{
 int data; //節(jié)點數(shù)據(jù) 
 ChainNode *left; //節(jié)點的前驅(qū)指針
 ChainNode *right; //節(jié)點的后繼指針 
};
////////////創(chuàng)建n個雙向循環(huán)鏈表 并返回鏈表頭指針///////// 
ChainNode* CreateNode(int n)
{
 ChainNode *head = NULL; //鏈表頭節(jié)點
 ChainNode *pCur=NULL,*pNew=NULL; //當(dāng)前節(jié)點,新建節(jié)點
 //初始化頭結(jié)點的前驅(qū)和后繼節(jié)點都為NULL 
 if (n<1) //沒有節(jié)點 返回頭節(jié)點 
 {
  return head; 
 } 
 //創(chuàng)建頭節(jié)點并將器左右指針指向空 
 head = new ChainNode; 
 head->left = NULL;
 head->right = NULL; 
 head->data = 0;
 pCur = head;
 //為防止指針互指帶來的混亂,用pCur節(jié)點保存了頭節(jié)點 也表示當(dāng)前指針移動到了頭指針 
 //創(chuàng)建n個節(jié)點 并連接成鏈表 
 for (int i=0; i<n; i++)
 {
  pNew = new ChainNode; //創(chuàng)建一個新節(jié)點
  cout<<"請輸入數(shù)據(jù):";
  cin>>pNew->data;
  pCur->right = pNew; //頭指針的右指針指向新建節(jié)點 
  pNew->left = pCur; //新建節(jié)點的左指針執(zhí)行頭節(jié)點 
  pNew->right = NULL; //用于最后和頭指針進行交換 
  pCur = pNew; //指針往下移動 
 } 
 //最后將頭指針的左指針指向最后一個節(jié)點,
 //最后一個節(jié)點的有指針指向頭指針,構(gòu)成循環(huán) 
 head->left = pCur; 
 pCur->right = head;
 return head; 
}
//////////////輸出鏈表頭節(jié)點/////////////////////// 
void OutList(ChainNode *head) //參數(shù)為頭指針 從頭指針開始 
{
  cout<<"鏈表元素輸出如下:"<<endl;
  ChainNode *pCur = head->right;
  //重第一個節(jié)點開始輸出 
  //沒有指向空節(jié)點,則鏈表沒結(jié)束 輸出鏈表元素 
  while (pCur->right != head)  
  {
   cout<<pCur->data<<" ";
   pCur = pCur->right;
   //當(dāng)前節(jié)點指向下一個節(jié)點 可以遍歷鏈表 
  } 
  cout<<pCur->data<<endl;
  //輸入最后一個元素,它的右指針執(zhí)行head 
}
///////在雙向循環(huán)鏈表后添加n個節(jié)點//////
ChainNode* AddNode(ChainNode* head, int n)
{
 ChainNode *pNew,*pCur;
 //新添加節(jié)點和當(dāng)前節(jié)點
 pCur = head; 
 //移動到最節(jié)點
 while (pCur->right != head) 
 {
   pCur = pCur->right;
   //當(dāng)前節(jié)點往下移動 一直移到最后一個節(jié)點 
 }
 //新添加n個節(jié)點并插入鏈表
 for (int i=0; i<n; i++)
 {
  pNew = new ChainNode;
  cout<<"輸入要添加的節(jié)點元素:";
  cin>>pNew->data;
  pCur->right = pNew; //頭指針的右指針指向新建節(jié)點 
  pNew->left = pCur; //新建節(jié)點的左指針執(zhí)行頭節(jié)點 
  pNew->right = NULL; //用于最后和頭指針進行交換 
  pCur = pNew; //指針往下移動 
 } 
 //最后將頭指針的左指針指向最后一個節(jié)點,
 //最后一個節(jié)點的有指針指向頭指針,構(gòu)成循環(huán) 
 head->left = pCur; 
 pCur->right = head;
 return head; 
} 
/////在雙向循環(huán)鏈表中刪除一個節(jié)點/////// 
ChainNode* DeleteNode(ChainNode* head, unsigned num)
//刪除第num個節(jié)點
{
 ChainNode *pNew,*pCur,*temp;
 //新添加節(jié)點和當(dāng)前節(jié)點 ,臨時交換節(jié)點 
 pCur = head; 
 int ncount = 0; 
 //移動到第num-1個節(jié)點
 while (1)
 {
   ncount++;
   pCur = pCur->right; //當(dāng)前節(jié)點往下移動 
   if (num == ncount)
   {
    break; //此時pCur還是指向了第num個節(jié)點 
   } 
 }
 //當(dāng)前節(jié)點的前一個節(jié)點的右指針 指向 當(dāng)前節(jié)點的下一個節(jié)點
 //當(dāng)前節(jié)點的下一個節(jié)點的左指針 指向 當(dāng)前節(jié)點的上一個節(jié)點 構(gòu)成連接
 //最后 刪除當(dāng)前節(jié)點 
 (pCur->left)->right = pCur->right;
 (pCur->right)->left = pCur->left;
 delete pCur;
 return head; 
}
int main()
{
 int num;
 //創(chuàng)建num個節(jié)點并顯示 
 cout<<"輸入要創(chuàng)建的鏈表節(jié)點個數(shù):";
 cin>>num;
 ChainNode *head = CreateNode(num);
 OutList(head); 
 //往鏈表后添加n個節(jié)點
 int addnum;
 cout<<"輸入要添加的節(jié)點個數(shù):";
 cin>>addnum; 
 AddNode(head, addnum);
 OutList(head); 
 //刪除鏈表的第del個元素
 int del;
 cout<<"輸入要刪除的第幾個位置的節(jié)點:";
 cin>>del;
 DeleteNode (head, del);
 OutList(head);
 system("pause");
 return 0;
}

希望本文所述對大家的C++程序設(shè)計有所幫助。

上一篇:C++實現(xiàn)簡單的學(xué)生管理系統(tǒng)

欄    目:C語言

下一篇:C++文件讀寫代碼分享

本文標(biāo)題:C++雙向循環(huán)列表用法實例

本文地址:http://mengdiqiu.com.cn/a1/Cyuyan/2988.html

網(wǎng)頁制作CMS教程網(wǎng)絡(luò)編程軟件編程腳本語言數(shù)據(jù)庫服務(wù)器

如果侵犯了您的權(quán)利,請與我們聯(lián)系,我們將在24小時內(nèi)進行處理、任何非本站因素導(dǎo)致的法律后果,本站均不負任何責(zé)任。

聯(lián)系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網(wǎng) 版權(quán)所有