日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

c语言节点的作用,C语言链表(基本功能函数)

發布時間:2023/11/27 生活经验 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c语言节点的作用,C语言链表(基本功能函数) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

創建鏈表

Node* CreateLinkList(const int n)

{

Node *head = NULL;

Node *previous = NULL;

Node *current = NULL;

int i = 0;

for (i = 0; i < n; i++){

current = (Node *)malloc(sizeof(Node));

if (current == NULL){

printf("內存分配失敗!\n");

exit(-1);

}

if (head == NULL) //頭結點的地址指向頭指針

head = current;

if (previous != NULL)

previous->next = current;

printf("請輸入數值: ");

scanf("%d", &current->data);

current->next = NULL;

previous = current;

}

return head;

}

2.遍歷鏈表

void TraverseLinkList(Node* const head)

{

Node *current = NULL; //臨時指針

current = head;

printf("鏈表遍歷結果為:");

while (current != NULL){

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

current = current->next;

}

printf("\n");

}

3.獲取鏈表長度

int GetListLength(Node* const head)

{

Node *current = NULL; //臨時指針

int len = 0;

current = head;

while (current != NULL){

len++;

current = current->next;

}

return len;

}

4.插入鏈表

int InsertList(Node **phead, int i, int val)

{

Node *head = NULL; //臨時指針

Node *previous = NULL;

Node *current = NULL;

Node *new_code = NULL;

int len = 0;

int j = 1;

head = *phead;

len = GetListLength(head);

if (i > len + 1 || i < 1){

printf("節點不存在...\n");

return FALSE;

}

new_code = (Node *)malloc(sizeof(Node)); //為新節點分配內存

//新元素插入到鏈表頭部,更新頭指針的值

if (i == 1){

new_code->data = val;

new_code->next = head;

*phead = new_code; //更新頭指針的值

return TRUE;

}

//新元素插入到鏈表非頭部的其他位置

current = head;

while (j < i){

previous = current;

current = current->next;

j++;

}

previous->next = new_code;

new_code->next = current;

new_code->data = val;

return TRUE;

}

5.刪除鏈表中節點

int DeleteElem(Node **phead, int i)

{

Node *head = NULL; //臨時指針

Node *previous = NULL;

Node *current = NULL;

int j = 1;

int len = 0;

head = *phead;

len = GetListLength(head);

if (i > len){

printf("不再該節點...\n");

return FALSE;

}

current = head;

if (i == 1){ //刪除頭節點

*phead = current->next; //更新頭指針

free(current);

current = NULL;

return TRUE;

}

while (j < i){

previous = current;

current = current->next;

j++;

}

previous->next = current->next;

free(current);

current = NULL;

return TRUE;

}

6.銷毀鏈表

void DestroyList(Node **phead)

{

Node *previous = NULL;

Node *current = NULL;

current = *phead;

while (current != NULL){

previous = current;

current = current->next;

free(previous);

previous = NULL;

}

*phead = NULL;

}

7.鏈表排序(冒泡排序法)

void SortList(Node *head)

{

Node *current = NULL;

Node *p = NULL;

int tmp = 0;

current = head;

if (current == NULL || current->next == NULL)

return;

for (current = head; current->next != NULL; current = current->next){

for (p = head; p->next != NULL; p = p->next){

if (p->data > p->next->data){

tmp = p->data;

p->data = p->next->data;

p->next->data = tmp;

}

}

}

}

8.主函數

#define TRUE 1

#define FALSE 0

/* 單鏈表存儲結構 */

typedef struct Node

{

int data;

struct Node *next;

}Node;

int main(void)

{

Node *head = NULL;

int val = 0;

int n = 0;

head = CreateLinkList(5); //創建鏈表

TraverseLinkList(head); //遍歷

printf("鏈表長度為: %d\n", GetListLength(head));

SortList(head); //排序

printf("排序之后");

TraverseLinkList(head); //遍歷

printf("\n");

/* 插入新節點 */

printf("新節點的位置: ");

scanf("%d", &n);

printf("新節點的值: ");

scanf("%d", &val);

InsertList(&head, n, val);

printf("插入新節點之后");

TraverseLinkList(head);

printf("鏈表長度為: %d\n", GetListLength(head));

printf("\n");

/* 刪除節點 */

printf("要刪除的節點的位置: ");

scanf("%d", &n);

DeleteElem(&head, n);

printf("刪除節點之后");

TraverseLinkList(head);

printf("鏈表長度為: %d\n", GetListLength(head));

printf("\n");

/* 銷毀鏈表 */

printf("銷毀鏈表之后");

DestroyList(&head);

printf("head = %p\n", head); //打印頭節點的值(head = NULL 頭節點釋放成功)

printf("鏈表長度為: %d\n", GetListLength(head));

printf("\n");

printf("hello...\n");

return 0;

}

9.測試結果

總結

以上是生活随笔為你收集整理的c语言节点的作用,C语言链表(基本功能函数)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 久久99中文字幕 | 午夜精品久久久久久久99 | 真性中出 | 日本亲近相奷中文字幕 | 成人123区| 久久久久久久久久久久久久久久久 | 亚洲午夜精品一区二区三区 | 九九色精品 | 天天舔天天操天天干 | 成年人在线观看视频网站 | 欧美色v| 精品欧美一区二区三区 | 毛片哪里看 | 色涩av | 美腿丝袜亚洲综合 | 国产传媒在线播放 | 葵司ssni-879在线播放 | 天堂资源在线 | 黑人3p波多野结衣在线观看 | 亚洲国产一二三区 | 插插插干干干 | 欧美两根一起进3p做受视频 | 精品免费一区 | 永久免费视频网站 | 中文字幕中出 | 国产一区二区三区91 | 日韩在线中文字幕视频 | 午夜黄色大片 | 五月天综合网站 | 青青草97国产精品免费观看 | 偷拍一区二区三区四区 | 99久久99久久 | 玖玖视频网 | 国产一区av在线 | 欧美性猛交乱大交xxxx | 波多野一区二区三区 | 牛牛av国产一区二区 | 成人午夜毛片 | 韩国三级在线视频 | 日韩av三级在线 | 国产精品免费一区二区三区 | 国产一区二区三区四区hd | 男女超爽视频免费播放 | 新婚夫妇白天啪啪自拍 | 国产又粗又猛又黄又爽无遮挡 | 欧美十大老熟艳星 | 亚洲激情三区 | 91福利视频网 | 精品中文在线 | 黄色一级大片在线免费看国产 | 国产精品一二三 | 中文字幕亚洲在线观看 | 一区二区午夜 | 日韩视频中文字幕在线观看 | 亚洲性激情 | 色老头在线观看 | 99re这里只有精品在线 | 精品一区二区三区在线播放 | 欧美一级免费看 | 最好看的中文字幕国语电影mv | 色婷婷综合久久久久中文字幕 | 日本久色 | 国产一区二区免费在线观看 | 好吊一二三区 | 久久a视频 | 亚洲成人一级 | 日本少妇与黑人 | 精品国产鲁一鲁一区二区张丽 | 美日韩在线观看 | 国产一二三级 | 久久久久99人妻一区二区三区 | 一区二区三区视频网站 | 国产精品不卡av | 久久国产精品影视 | www.色就是色 | 夜夜伊人| 成人毛片视频在线观看 | 亚洲欧美日韩在线不卡 | 天天色视频 | 大乳村妇的性需求 | 国产一二区在线观看 | 中文字幕在线免费看线人 | 不卡国产在线 | 天狂传说之巴啦啦小魔仙 | 成人精品国产免费网站 | 在线观看日本网站 | 国产欧美激情视频 | 三级自拍视频 | 二区三区| 国产一区二区三区日韩 | 天天欲色 | 天天干天天日夜夜操 | 一区二区三区在线观看 | 国产精品av免费观看 | 国产又粗又猛又黄又爽 | 欧洲影院 | 丰满少妇一区二区三区专区 | 已满18岁免费观看电视连续剧 | 欧美激情成人在线 |