色yeye在线视频观看_亚洲人亚洲精品成人网站_一级毛片免费播放_91精品一区二区中文字幕_一区二区三区日本视频_成人性生交大免费看

單鏈表 時(shí)間:2019-07-12      來(lái)源:沈陽(yáng)中心,楊老師

鏈表用來(lái)解決1 順序表數(shù)據(jù)大量移動(dòng)的問(wèn)題

             2 解決順序表元素?cái)?shù)量固定的問(wèn)題

鏈表分為單向鏈表,雙向鏈表,單向循環(huán)鏈表,雙向循環(huán)鏈表

單鏈表通常有兩個(gè)域

數(shù)據(jù)域(保存數(shù)據(jù))

指針域(保存下一個(gè)節(jié)點(diǎn)的位置)

單鏈表結(jié)構(gòu)體定義如下

typedef struct node_t

{

int data;              //數(shù)據(jù)域

struct node_t *next;   //指針域,通過(guò)指針域可以找到下一個(gè)節(jié)點(diǎn)

}link_node_t;

 

typedef struct node_t

{

struct student data;              //數(shù)據(jù)域

struct node_t *next;   //指針域,通過(guò)指針域可以找到下一個(gè)節(jié)點(diǎn)

}link_node_t;

 

typedef struct node_t

{

char name[20];              //數(shù)據(jù)域

struct node_t *next;   //指針域,通過(guò)指針域可以找到下一個(gè)節(jié)點(diǎn)

}link_node_t;

/////////////////////////

有這些名字,我們用單鏈表將這些名字連接起來(lái)

"yang", "li", "liu", "wang"

#include <stdio.h>

typedef struct node_t

{

char name[20];              //數(shù)據(jù)域

struct node_t *next;   //指針域,通過(guò)指針域可以找到下一個(gè)節(jié)點(diǎn)

}link_node_t;

int main()

{

link_node_t *h;

link_node_t A = {"yang", NULL};

link_node_t B = {"li", NULL};

link_node_t C = {"liu", NULL};

link_node_t D = {"wang", NULL};

A.next = &B;

B.next = &C;

C.next = &D;

h = &A;

//輸出每個(gè)節(jié)點(diǎn)

while(h != NULL)

{

printf("%s\n", h->name);

h = h->next;

}

}

/////////////

單向鏈表 兩種類型

1  不帶頭結(jié)點(diǎn)的單向鏈表(鏈表中所有元素都是有效的)

上面名字例子:

2 帶頭結(jié)點(diǎn)的單向鏈表   (頭結(jié)點(diǎn): 是一個(gè)空節(jié)點(diǎn),這個(gè)節(jié)點(diǎn)不存有效數(shù)據(jù),只有next是有效的)

#include <stdio.h>

typedef struct node_t

{

char name[20];              //數(shù)據(jù)域

struct node_t *next;   //指針域,通過(guò)指針域可以找到下一個(gè)節(jié)點(diǎn)

}link_node_t;

int main()

{

link_node_t h; //頭結(jié)點(diǎn)

link_node_t A = {"yang", NULL};

link_node_t B = {"li", NULL};

link_node_t C = {"liu", NULL};

link_node_t D = {"wang", NULL};

A.next = &B;

B.next = &C;

C.next = &D;

h.next = &A;

link_node_t *p;

p = &h;

//輸出每個(gè)節(jié)點(diǎn)

while(p->next != NULL)

{

p = p->next;

printf("%s\n", p->name);

}

}

用帶頭結(jié)點(diǎn)的單向鏈表存儲(chǔ)n個(gè)學(xué)生成績(jī) ,成績(jī)由鍵盤(pán)輸入,輸入<=0 時(shí)結(jié)束

////

#include <stdio.h>

#include <stdlib.h>

typedef struct node_t

{

int score;              //數(shù)據(jù)域

struct node_t *next;   //指針域,通過(guò)指針域可以找到下一個(gè)節(jié)點(diǎn)

}link_node_t;

int main()

{

int s;

//創(chuàng)建一個(gè)頭結(jié)點(diǎn)

link_node_t *p, *q, *h;//p 是新節(jié)點(diǎn)   q 是最后一個(gè)節(jié)點(diǎn)    h是第一個(gè)節(jié)點(diǎn)

p = malloc(sizeof(link_node_t));

p->next = NULL;

q = p;

h = p;

while(1)

{

scanf("%d", &s);

if(s <= 0)

break;

p = malloc(sizeof(link_node_t));

p->score = s;

p->next = NULL;

q->next = p;

q = p;

}

p = h;

while(p->next != NULL)

{

p = p->next;

printf("%d\n", p->score);

}

//再寫(xiě)個(gè)釋放程序

while(h != NULL)

{

p = h->next;

free(h);

h = p;

}

}

鏈表有這些操作

#include <stdio.h>

#include <stdlib.h>

typedef struct node_t

{

int data;              //數(shù)據(jù)域

struct node_t *next;   //指針域

}link_node_t, *link_list_t;

//1 創(chuàng)建空鏈表(帶頭結(jié)點(diǎn)的單向鏈表)

link_node_t *CreateEmptyLinklist()

{

link_node_t *p = malloc(sizeof(link_node_t));

p->next = NULL;

return p;

}

//2 判斷表是否為空           1 空    0 非空

int EmptyLinklist(link_node_t *p)

{

if(p->next == NULL)

return 1;

else

return 0;

}

//2.5 求鏈表長(zhǎng)度

int LengthLinklist(link_node_t *p)

{

int i = 0;

while(p->next != NULL)

{

i++;

p = p->next;

}

return i;

}

//3 查找某個(gè)位置元素的值

int GetLinklist(link_node_t *p, int pos)

{

int i;

if(pos > LengthLinklist(p) + 1 || pos < 1)

return -1;

for(i = 0; i  < pos; i++)

{

p = p->next;

}

return p->data;

}

//4 插入元素

int InsertLinklist(link_node_t *p, int pos, int x)

{

int i;

link_node_t *q;

if(pos > LengthLinklist(p) + 1 || pos < 1)

return -1;

for(i = 0; i < pos - 1; i++)

{

p = p->next;

}

q = malloc(sizeof(link_node_t));

q->data = x;

q->next = p->next;

p->next = q;

return 0;

}

//5 刪除元素

int DeleteLinklist(link_node_t *p, int pos)

{

int i;

link_node_t *q;

if(pos > LengthLinklist(p) + 1 || pos < 1)

return -1;

for(i = 0; i < pos - 1; i++)

{

p = p->next;

}

q = p->next;

p->next = q->next;

free(q);

return 0;

}

//6 將鏈表倒置(逆轉(zhuǎn))

void ReverseLinklist(link_node_t *h)

{

link_node_t *p, *q;

p = h->next;

h->next = NULL;

while(p != NULL)

{

q = p;

p = p->next;

q->next = h->next;

h->next = q;

}

return;

}

//7 輸出鏈表中所有元素

void PrintLinklist(link_node_t *p)

{

while(p->next != NULL)

{

p = p->next;

printf("%d ", p->data);

}

printf("\n");

}

int main()

{

link_node_t *h = CreateEmptyLinklist();

printf("%d\n", InsertLinklist(h, 1, 40));

InsertLinklist(h, 1, 20);

InsertLinklist(h, 2, 30);

PrintLinklist(h); //20 30 40

InsertLinklist(h, 1, 10);

PrintLinklist(h); //10 20 30 40

DeleteLinklist(h, 3);

PrintLinklist(h); //10 20 40

ReverseLinklist(h);

PrintLinklist(h); //40 20 10

}

上一篇:ARM異常處理設(shè)置

下一篇:STM32的IWDG

熱點(diǎn)文章推薦
華清學(xué)員就業(yè)榜單
高薪學(xué)員經(jīng)驗(yàn)分享
熱點(diǎn)新聞推薦
前臺(tái)專線:010-82525158 企業(yè)培訓(xùn)洽談專線:010-82525379 院校合作洽談專線:010-82525379 Copyright © 2004-2022 北京華清遠(yuǎn)見(jiàn)科技集團(tuán)有限公司 版權(quán)所有 ,京ICP備16055225號(hào)-5京公海網(wǎng)安備11010802025203號(hào)

回到頂部

主站蜘蛛池模板: 在线v片免费观看视频 | 东京热男人aV天堂 | 国产乱理伦片a级在线观看 日本三级吃奶头添泬无码 18一20岁毛毛片 | 亚洲精品高清国产一线久久 | 成人无遮挡裸免费视频在线观看 | 日批免费在线观看 | 人成午夜免费视频在线观看 | 永久免费观看午夜成人网站 | 亚洲丰满熟女一区二区哦 | 日韩加勒比一本无码精品 | 婷婷亚洲影院 | 久久天天躁夜夜躁狠狠综合 | 自拍视频99 | 久久69国产精品久久69软件 | 精品久久人人爽天天玩人人妻 | 在厨房拨开内裤进入在线视频 | porno日本xxxxx| 无码一区二区三区AV免费蜜桃 | 国产一级精品绿帽视频 | 国产偷久久 | 美国毛片一区二区三区 | 少妇久久久久久久久 | 亚洲AV片不卡无码久久欣赏网 | 中国一级片在线播放 | 波多野结衣中文字幕久久 | 狠狠久久永久免费观看 | 爱做久久久久久 | 91影音 | 真人在线观看色网视频 | ririsao亚洲国产中文 | 97碰碰碰免费公开在线视频 | 亚洲最大无码AV网址 | 亚洲国产日本韩国欧美mv | 秋霞人成在线观看免费视频 | 亚洲无人区在线观看AV | 国产亚洲精品码 | 久久精品国产亚洲av不卡 | 裸体美女扒开下部无遮挡网站免费 | 亚洲综合一区二区三区四区五区 | 欧美一区二区视频高清专区 | 高潮毛片无遮挡免费高清 |