青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨感而發

雜七雜八

統計

留言簿(13)

閱讀排行榜

評論排行榜

鏈表學習--雙向鏈表實現

今天學習了鏈表的數據結構。他的主要思路為:
1. 他訪問數據的方式不是數組的下標,而是他的節點的指針來訪問。所以他可以更靈活的處理數據見得相關信息。不過他的速度肯定沒有數組下標快的,空間也沒有數組利用率高,可他的靈活性給了我們很大的方便。我們用鏈表的時候還是很多的。
2. 鏈表是用指針的指向來訪問管理數據的,一個我們把數據存在一個節點里,一個節點包括:nData,節點的數據域,nNext,他指向的下一個指針,nPre他的上一個指針。如果他沒有下一個指針或上一個指針,我們指向空nil.
3. 一般一個鏈表有一個頭節點。以他開始訪問整個鏈表區域的數據。這樣我們就能更好的控制鏈表了,就像數組下標為0的元素一樣。A[0]的地位。
截取書上的圖:

這就是一個鏈表的樣子了。呵呵 是不是很直觀呢?
鏈表主要的操作包括:
插入,刪除,查找,清空,等主要操作。
很重要的數據結構,奉上源代碼:

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

//定義鏈表的結構體。
struct MyList
{
    
int nData;
    MyList
* pPre;
    MyList
* pNext;
}
;

//全局的變量,保存鏈表的頭
MyList* g_pHead = NULL;

//判斷鏈表是否為空
bool IsEmpty()
{
    
//如果頭指針指向的是空,鏈表為空
    return g_pHead == NULL;
}


//清空鏈表
int Clear()
{
    
//刪除所有數據,并把頭指針指向為空
    MyList* pTemp = g_pHead;

    
//遍歷鏈表的數據。如果有數據,刪除,然后進入下一個數據
    while(g_pHead)
    
{
        g_pHead 
= g_pHead->pNext;
        delete pTemp;
        pTemp 
= g_pHead;
    }


    
return 1;
}


//插入數據到鏈表中
int Insert(int nData)
{
    
//這里是插入到頭的位置,類似棧的操作。
    MyList* pTemp = new MyList();    //申請一個新的空間存放數據。
    pTemp->nData = nData;
    pTemp
->pPre = NULL;            //他的上一個沒有
    pTemp->pNext = g_pHead;        //他的next指向頭節點,他作為頭節點的上一個成為新頭節點
    if (g_pHead)
    
{
        g_pHead
->pPre = pTemp;    //如果頭節點有數據,則把頭節點的上一個指向該節點。
    }

    g_pHead 
= pTemp;            //是頭節點指針指向他,他成為新的頭節點

    
return 1;
}


//查找數據
bool Find(int nData)
{
    MyList
* pTemp = g_pHead;        //從頭節點開始尋找。
    
//遍歷數據
    while(pTemp)
    
{
        
if (pTemp->nData == nData)    //如果找到該數據,
        {
            
return true;            //返回真。
        }


        pTemp 
= pTemp->pNext;        //沒有找到,進入下一個節點
    }


    
return false;            //遍歷之后沒有找到,則沒有該數據,返回false
}


//刪除數據。
bool Delete(int nData)
{
    
//先找到數據,然后再刪除。
    MyList* pTemp = g_pHead;    //要刪除的節點指針。    

    
//遍歷鏈表找到要刪除的節點
    while (pTemp)        
    
{
        
if (pTemp->nData == nData)    //找到了,刪除它
        {
            
if (pTemp->pPre)    //如果他有前一個節點,則前一個節點的next指向他的下一個節點
            {                    //這樣就不會吊鏈了。
                pTemp->pPre->pNext = pTemp->pNext;
            }

            
else        //沒有上一個節點,則他就是頭節點。
            {
                g_pHead 
= pTemp->pNext;    //頭節點指針指向他,他就可以安息了。
            }


            
if (pTemp->pNext)    //處理他的下一個節點情況,和上節點類似
            {
                pTemp
->pNext->pPre = pTemp->pPre;
            }


            delete pTemp;    
//刪除它的數據空間
            return true;    //返回true,刪除成功
        }

    }


    
return false;    //沒有找到數據,刪除失敗,返回false
}


int main()
{
    
//測試,
    for (int i = 0; i < 10++i)
    
{
        Insert(i);    
//插入數據
    }


    
if (Find(5)) //查找數據
    {
        printf(
"Yes!\n");
    }

    
if (!Find(11))
    
{
        printf(
"No!\n");
    }


    
while(!IsEmpty())    //逐一刪除數據
    {
        printf(
"%d ", g_pHead->nData);
        Delete(g_pHead
->nData);
    }

    printf(
"\n");
    
for (int i = 0; i < 10++i)
    
{
        Insert(i);
    }


    Clear();        
//清空數據。
    if (IsEmpty())
    
{
        printf(
"Empty!\n");
    }


    system(
"pause");
    
return 0;
}

posted on 2009-04-30 20:25 shongbee2 閱讀(6114) 評論(2)  編輯 收藏 引用 所屬分類: 數據結構和算法

評論

# re: 鏈表學習--雙向鏈表實現 2009-04-30 20:28 shongbee2

這里因為排版有問題,加上我技術很爛,所以圖很模糊,不要見怪啊。是書上的原圖。呵呵。。。  回復  更多評論   

# re: 鏈表學習--雙向鏈表實現 2013-04-16 15:20 蘇七七

覺得你對雙鏈表的理解上有問題。。。。@shongbee2
  回復  更多評論   

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久久久综合网| 欧美二区视频| 国产亚洲欧美日韩在线一区| 国产欧美精品日韩区二区麻豆天美| 久久青草欧美一区二区三区| 一本色道久久综合亚洲精品高清| 99国产精品国产精品久久| 亚洲欧洲一级| 99伊人成综合| 午夜在线观看免费一区| 久久精品亚洲| 亚洲国产99精品国自产| 亚洲精品五月天| 亚洲一区二区不卡免费| 久久九九免费视频| 欧美激情一区二区三级高清视频| 欧美日在线观看| 国产伦精品一区二区三区免费迷 | 欧美日韩国产色综合一二三四| 欧美国产综合一区二区| 国产精品久久久久久模特 | 亚洲私人影院| 久久久97精品| 欧美日韩在线高清| 黄色一区三区| 亚洲视屏一区| 免费看亚洲片| 亚洲一区二区三区高清| 久久精品夜夜夜夜久久| 欧美亚男人的天堂| 亚洲激情自拍| 久久久久久久精| 亚洲精品视频一区二区三区| 久久成人精品一区二区三区| 欧美久久九九| 在线国产亚洲欧美| 欧美一区二区三区在线| 亚洲精品欧美在线| 久久久青草青青国产亚洲免观| 欧美日韩黄色大片| 亚洲国产片色| 浪潮色综合久久天堂| 亚洲主播在线| 欧美日韩视频| 91久久精品美女高潮| 欧美在线一二三四区| 一区二区三区高清| 欧美激情精品久久久久久黑人| 国产原创一区二区| 性感少妇一区| 亚洲激情一区二区三区| 久久深夜福利| 国产一区观看| 欧美在线免费观看视频| 一区二区三区欧美亚洲| 久久天天躁狠狠躁夜夜爽蜜月| 国产精品免费观看视频| 亚洲三级影片| 久久久一区二区| 亚洲女人天堂av| 欧美日韩一视频区二区| 日韩视频免费观看高清在线视频| 麻豆精品精华液| 欧美一区二区高清| 国产小视频国产精品| 小黄鸭精品密入口导航| 一区二区国产精品| 欧美视频网址| 亚洲综合大片69999| 一区二区国产精品| 国产精品久久久久国产a级| 中文在线不卡视频| 亚洲视频一区二区在线观看| 欧美亚州一区二区三区| 亚洲欧美日韩在线播放| 在线亚洲欧美视频| 一区二区三区**美女毛片| 欧美视频在线观看视频极品| 亚洲午夜精品网| 亚洲永久字幕| 国产一区视频在线观看免费| 久久综合九色综合欧美就去吻 | 欧美在线免费一级片| 午夜亚洲福利在线老司机| 国产欧美在线| 噜噜噜在线观看免费视频日韩| 久久天天躁夜夜躁狠狠躁2022| 亚洲韩国青草视频| 野花国产精品入口| 国产精品一区二区久激情瑜伽| 久久精品免费电影| 免费亚洲一区二区| 亚洲一区二区少妇| 欧美一区二区成人| 亚洲精品国产拍免费91在线| 99精品99| 狠狠色狠狠色综合| 亚洲人在线视频| 国产欧美日本一区二区三区| 美女成人午夜| 欧美日韩一区二区三区视频 | 亚洲最新视频在线| 亚洲欧美日韩国产成人| 在线日韩中文字幕| av成人动漫| 一区二区在线免费观看| 亚洲精品中文字幕女同| 国产一区二区中文字幕免费看| 亚洲国产午夜| 国产午夜精品久久久久久久| 最新精品在线| 国产亚洲欧洲997久久综合| 亚洲国产精品综合| 国产夜色精品一区二区av| 欧美在线一区二区| 国产精品一区二区你懂的| 欧美成人精品福利| 国产精品福利网| 欧美激情麻豆| 国产一区二区日韩精品| 亚洲伦理在线免费看| 在线观看久久av| 亚洲性xxxx| 一区二区三区四区国产| 老司机成人在线视频| 欧美一区国产在线| 欧美日韩成人在线观看| 一区二区高清在线| 亚洲一区二区三区中文字幕在线 | 久久亚洲综合| 久久精品国产99精品国产亚洲性色| 欧美欧美天天天天操| 欧美成人黄色小视频| 狠狠色综合一区二区| 午夜激情一区| 校园激情久久| 欧美激情亚洲| 亚洲精品在线二区| 一本一本久久| 欧美日本高清视频| 亚洲福利视频网站| 亚洲国产欧美精品| 噜噜爱69成人精品| 欧美国产日韩一区二区| 国内精品久久久久久影视8| 午夜精品久久久久影视 | 欧美日韩国产大片| 亚洲激情在线观看| 亚洲三级观看| 欧美极品欧美精品欧美视频| 亚洲国产日韩综合一区| 91久久精品国产91久久| 欧美成人r级一区二区三区| 欧美成人免费va影院高清| 在线精品视频一区二区三四| 久久综合九色综合欧美狠狠| 亚洲大胆女人| 艳妇臀荡乳欲伦亚洲一区| 欧美日韩亚洲在线| 亚洲欧美视频一区| 免费在线一区二区| 亚洲精品综合久久中文字幕| 欧美美女日韩| 亚洲综合日韩在线| 久久久水蜜桃| 亚洲精品国产精品乱码不99按摩 | 国内成+人亚洲| 久久精品在线播放| 欧美激情视频在线播放| 日韩亚洲精品在线| 欧美午夜精品久久久久久人妖| 亚洲性视频h| 美女主播一区| 这里是久久伊人| 一本色道久久88综合亚洲精品ⅰ| 亚洲香蕉成视频在线观看| 午夜在线精品偷拍| 国产主播精品| 欧美mv日韩mv国产网站| 日韩午夜精品| 久久精品视频免费播放| 亚洲区第一页| 国产乱码精品| 欧美激情国产精品| 亚洲欧美日韩综合aⅴ视频| 欧美电影在线播放| 亚洲欧美综合精品久久成人| 精品不卡在线| 欧美视频一区二区三区…| 久久精品成人| 在线一区二区视频| 欧美+日本+国产+在线a∨观看| 亚洲视频 欧洲视频| 欧美性猛片xxxx免费看久爱| 久久一区二区精品| 一本在线高清不卡dvd| 欧美大片在线观看一区| 亚洲男人影院| 一本一本a久久| 亚洲欧洲久久|