最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

數(shù)據(jù)結(jié)構(gòu) 雙向鏈表的創(chuàng)建和讀取詳解及實例代碼

 更新時間:2017年03月13日 15:30:38   作者:net小伙  
這篇文章主要介紹了數(shù)據(jù)結(jié)構(gòu) 雙向鏈表的創(chuàng)建和讀取詳解及實例代碼的相關(guān)資料,需要的朋友可以參考下

數(shù)據(jù)結(jié)構(gòu) 雙向鏈表的創(chuàng)建和讀取

雙向鏈表是為了滿足更加方便的查找前驅(qū),而付出空間的代價的一個數(shù)據(jù)結(jié)構(gòu)。雙向鏈表的節(jié)點定義如下:

 typedef struct node
 {
   int x;
   struct node *prior,*next;
 }DLNode;

雙向鏈表的空間結(jié)構(gòu)如下圖所示:

雙向鏈表的創(chuàng)建如下:

//創(chuàng)建雙向鏈表
DLNode *create_DList()
{
  DLNode *p,*h,*l;
  int n,i,x;
  h = (DLNode *)malloc(sizeof(DLNode));
  h->prior = h;    //當(dāng)空的雙向鏈表就像上圖那樣前驅(qū)和后驅(qū)都會指向自己;
  h->next = h;
  p = h;
  printf("請輸入需要創(chuàng)建雙向鏈表的長度:");
  scanf("%d",&n);
  for(i = 0; i < n; i++)
  {
    printf("請輸入第%d個數(shù)",i+1);
    scanf("%d",&x);
    l = (DLNode *)malloc(sizeof(DLNode));
    l->x = x;
    p->next = l;
    l->prior = p;
    l->next = h;     //注意,l->next鏈接的是頭節(jié)點, 
    h->prior = l;    //而頭結(jié)點的前驅(qū)是l。 這樣便構(gòu)成了一個循環(huán)的雙向鏈表
    p = l;
  }
  return(h);  //不要忘記返回鏈表
}

上面綠顏色的字需要注意;

讀取雙向鏈表的代碼如下:

void out_DList(DLNode *l)
{
  DLNode *p;
  int i;
  p = l;
  p = p->next;
  while(p!=l)  //注意條件發(fā)生了變化
  {
    printf("%5d",p->x);
    p = p->next;  //不要忘記讓p指向下一個節(jié)點;
  }
}

注意:①:由于頭節(jié)點的值為空,所以p = p->next; ②:循環(huán)的條件發(fā)生了變化,因為這是一個循環(huán)鏈表,鏈表的尾部指向頭部,所以條件是p!=l;

全部代碼如下:

#include<stdio.h>
#include <stdlib.h>

typedef struct node
{
  int x;
  struct node *prior,*next;
}DLNode;

//函數(shù)聲明
DLNode *create_DList();
void out_DList(DLNode *l);

main()
{
  DLNode *l;
  l = create_DList();
  printf("創(chuàng)建成功!");
  out_DList(l);
}

//讀取雙向鏈表
void out_DList(DLNode *l)
{
  DLNode *p;
  int i;
  p = l;
  p = p->next;
  while(p!=l)
  {
    printf("%5d",p->x);
    p = p->next;
  }
}


//創(chuàng)建雙向鏈表
DLNode *create_DList()
{
  DLNode *p,*h,*l;
  int n,i,x;
  h = (DLNode *)malloc(sizeof(DLNode));
  h->prior = h;
  h->next = h;
  p = h;
  printf("請輸入需要創(chuàng)建雙向鏈表的長度:");
  scanf("%d",&n);
  for(i = 0; i < n; i++)
  {
    printf("請輸入第%d個數(shù)",i+1);
    scanf("%d",&x);
    l = (DLNode *)malloc(sizeof(DLNode));
    l->x = x;
    p->next = l;
    l->prior = p;
    l->next = h;
    h->prior = l;
    p = l;
  }
  return(h);
}

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

相關(guān)文章

  • C++使struct對象擁有可變大小的數(shù)組(詳解)

    C++使struct對象擁有可變大小的數(shù)組(詳解)

    下面小編就為大家?guī)硪黄狢++使struct對象擁有可變大小的數(shù)組(詳解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-12-12
  • C++中使用cout以hex格式輸出方式

    C++中使用cout以hex格式輸出方式

    這篇文章主要介紹了C++中使用cout以hex格式輸出方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • Matlab利用遺傳算法GA求解非連續(xù)函數(shù)問題詳解

    Matlab利用遺傳算法GA求解非連續(xù)函數(shù)問題詳解

    遺傳算法起源于對生物系統(tǒng)所進(jìn)行的計算機(jī)模擬研究。其本質(zhì)是一種高效、并行、全局搜索的方法,能在搜索過程中自動獲取和積累有關(guān)搜索空間的知識,并自適應(yīng)地控制搜索過程以求得最佳解。本文將利用其求解非連續(xù)函數(shù)問題,需要的可以參考一下
    2022-09-09
  • 為什么要學(xué)習(xí)C語言 C語言優(yōu)勢分析

    為什么要學(xué)習(xí)C語言 C語言優(yōu)勢分析

    不止一個學(xué)生問到我:“老師,為什么我們的應(yīng)用程序設(shè)計要學(xué)C語言而不是別的?C語言不是已經(jīng)過時了嗎?如果現(xiàn)在要寫一個Windows程序,用VB或Dephi開發(fā)多快呀,用C行嗎?退一萬步,為什么選擇C而不是C++呢?”
    2013-07-07
  • Opencv實現(xiàn)讀取攝像頭和視頻數(shù)據(jù)

    Opencv實現(xiàn)讀取攝像頭和視頻數(shù)據(jù)

    這篇文章主要為大家詳細(xì)介紹了Opencv實現(xiàn)讀取攝像頭和視頻數(shù)據(jù),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • C語言實現(xiàn)切片數(shù)組的示例詳解

    C語言實現(xiàn)切片數(shù)組的示例詳解

    由于c語言沒有集合類的標(biāo)準(zhǔn)庫,需要用時只能自己實現(xiàn),所以本文參考了go語言的slice,找到了一種非常簡化的動態(tài)數(shù)組接口,下面我們就來看看如何在C語言中實現(xiàn)切片吧
    2024-03-03
  • C++靜態(tài)持續(xù)變量介紹

    C++靜態(tài)持續(xù)變量介紹

    這篇文章主要介紹了 C++靜態(tài)持續(xù)變量,靜態(tài)持續(xù)變量的定義C++和C語言是一樣的,它擁有三種鏈接性,即外部鏈接性、內(nèi)部連接性和無鏈接性。其中外部鏈接性指的是可以在其他文件中訪問,內(nèi)部鏈接性指的是只能在當(dāng)前文件訪問,需要的朋友可以參考一下
    2021-11-11
  • C語言零基礎(chǔ)入門(2)

    C語言零基礎(chǔ)入門(2)

    這篇文章主要為大家詳細(xì)介紹了C語言零基礎(chǔ)入門的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • C語言枚舉(enum)和聯(lián)合(union)實例分享

    C語言枚舉(enum)和聯(lián)合(union)實例分享

    在本篇文章里小編給大家整理了關(guān)于C語言枚舉(enum)和聯(lián)合(union)實例內(nèi)容,需要的朋友們可以學(xué)習(xí)下。
    2020-03-03
  • C++中函數(shù)重載詳解

    C++中函數(shù)重載詳解

    大家好,本篇文章主要講的是C++中函數(shù)重載詳解,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-02-02

最新評論

绍兴市| 东乡| 六枝特区| 七台河市| 平利县| 马公市| 黄大仙区| 松阳县| 七台河市| 库伦旗| 遵义市| 连南| 天峻县| 隆安县| 和田县| 甘南县| 杭州市| 商水县| 专栏| 西充县| 循化| 苏尼特左旗| 洛川县| 郯城县| 万载县| 栾川县| 奈曼旗| 旬邑县| 大方县| 泉州市| 保德县| 南溪县| 郸城县| 台中县| 平谷区| 固安县| 沙湾县| 东至县| 罗甸县| 莫力| 社旗县|