中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

鏈表實(shí)現(xiàn)代碼

2018-07-20    來源:open-open

容器云強(qiáng)勢上線!快速搭建集群,上萬Linux鏡像隨意使用

鏈表在數(shù)據(jù)結(jié)構(gòu)中不難但是用的很多也算是數(shù)據(jù)結(jié)構(gòu)中必須掌握的內(nèi)容;數(shù)據(jù)結(jié)構(gòu)學(xué)了很久了,現(xiàn)在寫一些也當(dāng)做是回顧吧,都說數(shù)據(jù)結(jié)構(gòu)重要;

每次都是,除了代碼好像就么有什么可寫的了,哎;

反正就是跟線性表類似,畢竟都是線性結(jié)構(gòu);

把原先連續(xù)的儲(chǔ)存單元換成了分散的節(jié)點(diǎn),每一個(gè)節(jié)點(diǎn)分為數(shù)據(jù)域和指針域;

數(shù)據(jù)域存放數(shù)據(jù),指針域存放下一個(gè)節(jié)點(diǎn)的地址,注意下一個(gè)節(jié)點(diǎn)在物理存儲(chǔ)上不一定挨著的;

我們在遍歷一個(gè)鏈表的時(shí)候是靠節(jié)點(diǎn)的指針域找到下一個(gè)節(jié)點(diǎn)的,就這樣遍歷到了所有的節(jié)點(diǎn);

很多時(shí)候我們喜歡設(shè)一個(gè)頭結(jié)點(diǎn)(非首節(jié)點(diǎn),首尾是相對(duì)的),頭結(jié)點(diǎn)就在首節(jié)點(diǎn)前面一個(gè)節(jié)點(diǎn);

這個(gè)頭結(jié)點(diǎn)的數(shù)據(jù)域用來儲(chǔ)存整個(gè)鏈表的節(jié)點(diǎn)個(gè)數(shù),指針域存放首節(jié)點(diǎn)的地址,在很多時(shí)候很方便做一些操作,更多好處百度一下就會(huì)有;

下面這個(gè)代碼我依然是加了一個(gè)頭結(jié)點(diǎn):

#include  
#include  
typedef struct Node  
{  
    int data;  
    struct Node* next;  
}*List;  
void Initialization(List p)//初始化  
{  
    p->data=0;  
    p->next=NULL;  
}  
void Add(List p)//添加  
{  
    p->data++;  
    while(p->next!=NULL)  
        p=p->next;  
    List pNext=new struct Node;  
    //p=(List)malloc(sizeof(struct Node));  
    scanf("%d",&pNext->data );  
    pNext->next=NULL;  
    p->next=pNext;  
}  
void Show(List p)//輸出  
{  
    p=p->next;  
    while(p!=NULL)  
    {  
        printf("%d\n",p->data);  
        p=p->next;  
    }  
}  
void Insert(List p,int index,int e)//插入  
{  
    if(index>p->data)  
    {  
        p->data++;  
        while(p->next !=NULL)  
            p=p->next;  
        List pNext=new struct Node;  
        pNext->data=e;  
        pNext->next=NULL;  
        p->next=pNext;  
    }  
    else  
    {  
        puts("2\n");  
        p->data++;  
        for(int i=0;inext;  
        List NEW=new struct Node;  
        NEW->data=e;  
        NEW->next=p->next;  
        p->next=NEW;  
    }  
}  
void Sort(List p)   //排序  
{  
    List x,y;  
    int len=p->data;  
    for(int i=0;inext;  
        x=p;  
        y=p->next;  
        for(int j=i+1;jdata>y->data )  
                x=y;  
            y=y->next;  
        }  
        int tmp;  
        if(x->data!=p->data )  
        {  
            tmp=p->data;  
            p->data=x->data;  
            x->data=tmp;  
        }  
    }  
}  
int main()  
{  
    List pos;  
    pos=new struct Node;  
    Initialization(pos);  
    for(int i=0;i<3;++i) Add(pos); Insert(pos,2,90); Show(pos); Sort(pos); Show(pos); return 0; } //比起上篇寫的線性表加了一個(gè)排序,采用了選擇排序,其他功能和線性表差不多,如果對(duì)照起來理解的話會(huì)跟清晰;

標(biāo)簽: 代碼

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點(diǎn)!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請與原作者聯(lián)系。

上一篇:php基礎(chǔ)部分常見的函數(shù)和關(guān)鍵字

下一篇:WebGL入門與進(jìn)階1