当前位置: 首页 > news >正文

南宁商城开发厦门seo搜索排名

南宁商城开发,厦门seo搜索排名,wordpress开发网站模板,网站建设报价浩森宇特文章目录 主要内容一.单链表1.头插法建立单链表代码如下(示例): 2.尾插法建立单链表代码如下(示例): 3.按序号查找结点值代码如下(示例): 4.按值查找表结点代码如下(示例): 5.插入节…

主要内容

  1. 单链表
  2. 双链表和循环链表

链式表是一种常见的数据结构,它由一系列节点组成,每个节点包含数据和指向下一个节点的指针。链式表具有灵活的插入和删除操作,但访问元素的效率较低。

一.单链表

单链表是最简单的链表结构之一。它由一系列节点组成,每个节点包含数据和指向下一个节点的指针。单链表的特点是只能从头节点开始依次访问每个节点,无法直接访问任意位置的节点。这使得单链表在插入和删除操作时效率较高,但在查找和访问特定节点时效率较低。

1.头插法建立单链表

代码如下(示例):

C语言代码:

#include <stdio.h>
#include <stdlib.h>typedef struct Node {int data;struct Node* next;
} Node;Node* createListByHeadInsert(int arr[], int n) {Node* head = (Node*)malloc(sizeof(Node));head->next = NULL;for (int i = 0; i < n; i++) {Node* newNode = (Node*)malloc(sizeof(Node));newNode->data = arr[i];newNode->next = head->next;head->next = newNode;}return head;
}

Python代码:

class Node:def __init__(self, data):self.data = dataself.next = Nonedef create_list_by_head_insert(arr):head = Node(None)for data in arr:new_node = Node(data)new_node.next = head.nexthead.next = new_nodereturn head

2.尾插法建立单链表

代码如下(示例):

C语言代码:

Node* createListByTailInsert(int arr[], int n) {Node* head = (Node*)malloc(sizeof(Node));head->next = NULL;Node* tail = head;for (int i = 0; i < n; i++) {Node* newNode = (Node*)malloc(sizeof(Node));newNode->data = arr[i];newNode->next = NULL;tail->next = newNode;tail = newNode;}return head;
}

Python代码:

def create_list_by_tail_insert(arr):head = Node(None)tail = headfor data in arr:new_node = Node(data)tail.next = new_nodetail = new_nodereturn head

3.按序号查找结点值

代码如下(示例):

C语言代码:

int getElemByIndex(Node* head, int index) {Node* p = head->next;int i = 1;while (p && i < index) {p = p->next;i++;}if (!p || i > index) {return -1;}return p->data;
}

Python代码:

def get_elem_by_index(head, index):p = head.nexti = 1while p and i < index:p = p.nexti += 1if not p or i > index:return -1return p.data

4.按值查找表结点

代码如下(示例):

C语言代码:

Node* locateElem(Node* head, int value) {Node* p = head->next;while (p && p->data != value) {p = p->next;}return p;
}

Python代码:

def locate_elem(head, value):p = head.nextwhile p and p.data != value:p = p.nextreturn p

5.插入节点操作

代码如下(示例):

C语言代码:

void insertElem(Node* head, int index, int value) {Node* p = head;int i = 0;while (p && i < index - 1) {p = p->next;i++;}if (!p || i > index - 1) {return;}Node* newNode = (Node*)malloc(sizeof(Node));newNode->data = value;newNode->next = p->next;p->next = newNode;
}

Python代码:

def insert_elem(head, index, value):p = headi = 0while p and i < index - 1:p = p.nexti += 1if not p or i > index - 1:returnnew_node = Node(value)new_node.next = p.nextp.next = new_node

6.删除结点操作

代码如下(示例):

C语言代码:

void deleteElem(Node* head, int value) {Node* p = head;while (p->next && p->next->data != value) {p = p->next;}if (p->next) {Node* temp = p->next;p->next = temp->next;free(temp);}
}

Python代码:

def delete_elem(head, value):p = headwhile p.next and p.next.data != value:p = p.nextif p.next:temp = p.nextp.next = temp.nextdel temp

7.求表长操作

代码如下(示例):

C语言代码:

int getLength(Node* head) {Node* p = head->next;int length = 0;while (p) {length++;p = p->next;}return length;
}

Python代码:

def get_length(head):p = head.nextlength = 0while p:length += 1p = p.nextreturn length

二.双链表和循环链表

双链表在单链表的基础上增加了一个指向前一个节点的指针。这样一来,双链表可以双向遍历,即可以从头节点向后遍历,也可以从尾节点向前遍历。这种特性使得双链表在某些场景下具有更高的灵活性和效率。

1.双链表的插入操作

代码如下(示例):

C语言实现:

void insertNode(struct Node* prevNode, int newData) {if (prevNode == NULL) {printf("The given previous node cannot be NULL");return;}struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));newNode->data = newData;newNode->next = prevNode->next;prevNode->next = newNode;newNode->prev = prevNode;if (newNode->next != NULL) {newNode->next->prev = newNode;}
}

Python实现:

def insertNode(prev_node, new_data):if prev_node is None:print("The given previous node cannot be NULL")returnnew_node = Node(new_data)new_node.next = prev_node.nextprev_node.next = new_nodenew_node.prev = prev_nodeif new_node.next is not None:new_node.next.prev = new_node

2.双链表的删除操作

代码如下(示例):

C语言实现:

void deleteNode(struct Node** head_ref, struct Node* del) {if (*head_ref == NULL || del == NULL) {return;}if (*head_ref == del) {*head_ref = del->next;}if (del->next != NULL) {del->next->prev = del->prev;}if (del->prev != NULL) {del->prev->next = del->next;}free(del);
}

Python实现:

def deleteNode(head_ref, del_node):if head_ref is None or del_node is None:returnif head_ref == del_node:head_ref = del_node.nextif del_node.next is not None:del_node.next.prev = del_node.previf del_node.prev is not None:del_node.prev.next = del_node.nextdel_node = None

循环链表是一种特殊的链表结构,其尾节点指向头节点,形成一个闭环。循环链表可以用于模拟循环队列或循环缓冲区等场景,其特点是可以无限循环访问节点。

3.循环单链表

代码如下(示例):

C语言实现:

struct Node {int data;struct Node* next;
};void insertNode(struct Node** head_ref, int newData) {struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));struct Node* last = *head_ref;newNode->data = newData;newNode->next = *head_ref;if (*head_ref == NULL) {newNode->next = newNode;} else {while (last->next != *head_ref) {last = last->next;}last->next = newNode;}*head_ref = newNode;
}

Python实现:

class Node:def __init__(self, data):self.data = dataself.next = Nonedef insertNode(head_ref, new_data):new_node = Node(new_data)last = head_refnew_node.next = head_refif head_ref is None:new_node.next = new_nodeelse:while last.next != head_ref:last = last.nextlast.next = new_nodehead_ref = new_node

循环双链表是一种特殊的链式表,它的最后一个节点指向第一个节点,而第一个节点指向最后一个节点,形成一个循环。循环双链表可以在任意位置插入和删除节点。

4.循环双链表的插入操作

代码如下(示例):

C语言实现:

typedef struct Node {int data;struct Node* prev;struct Node* next;
} Node;void insert(Node* head, int data) {Node* newNode = (Node*)malloc(sizeof(Node));newNode->data = data;newNode->prev = head;newNode->next = head->next;head->next->prev = newNode;head->next = newNode;
}

Python实现:

class Node:def __init__(self, data):self.data = dataself.prev = Noneself.next = Nonedef insert(head, data):new_node = Node(data)new_node.prev = headnew_node.next = head.nexthead.next.prev = new_nodehead.next = new_node

5.循环双链表的删除操作

代码如下(示例):

C语言实现:

void delete(Node* node) {node->prev->next = node->next;node->next->prev = node->prev;free(node);
}

Python实现:

def delete(node):node.prev.next = node.nextnode.next.prev = node.prev

静态链表是一种使用数组来模拟链表结构的数据结构。它的特点是在静态分配的数组中维护节点的关系,而不是使用指针。静态链表在某些特定场景下可以减少指针操作的开销,但也限制了链表的动态性和灵活性。

6.静态链表的基本操作

代码如下(示例):

C语言实现:

#define MAX_SIZE 100
typedef struct {int data;int next;
} Node;int allocate(Node* arr) {int i = arr[0].next;if (i != -1) {arr[0].next = arr[i].next;}return i;
}void deallocate(Node* arr, int i) {arr[i].next = arr[0].next;arr[0].next = i;
}

Python实现:

MAX_SIZE = 100
class Node:def __init__(self, data, next):self.data = dataself.next = nextdef allocate(arr):i = arr[0].nextif i != -1:arr[0].next = arr[i].nextreturn idef deallocate(arr, i):arr[i].next = arr[0].nextarr[0].next = i

总结

以上是今天要讲的内容,学到了链式表中单链表、双链表、循环链表和静态链表的相关操作。
线性表–链式表-1


文章转载自:
http://dinncofervidly.knnc.cn
http://dinncogulliver.knnc.cn
http://dinncoatapi.knnc.cn
http://dinncoskulker.knnc.cn
http://dinncoanorexigenic.knnc.cn
http://dinncolaudably.knnc.cn
http://dinncofetoscopy.knnc.cn
http://dinncobranch.knnc.cn
http://dinncofinancing.knnc.cn
http://dinncorespectabilize.knnc.cn
http://dinncocorozo.knnc.cn
http://dinncoporker.knnc.cn
http://dinncodemythologize.knnc.cn
http://dinncosubbasement.knnc.cn
http://dinncootranto.knnc.cn
http://dinncolargeness.knnc.cn
http://dinncoprecipitin.knnc.cn
http://dinncointermolecular.knnc.cn
http://dinncodimensionality.knnc.cn
http://dinncopanurge.knnc.cn
http://dinncooxidant.knnc.cn
http://dinncofiberboard.knnc.cn
http://dinncorehumidify.knnc.cn
http://dinncolistenership.knnc.cn
http://dinncoimpudence.knnc.cn
http://dinncoconacre.knnc.cn
http://dinncoparisian.knnc.cn
http://dinncoarose.knnc.cn
http://dinncobisearch.knnc.cn
http://dinncocommuterdom.knnc.cn
http://dinncodeemster.knnc.cn
http://dinncozootechny.knnc.cn
http://dinncotruss.knnc.cn
http://dinncophleboid.knnc.cn
http://dinncocraftsman.knnc.cn
http://dinncoyawnful.knnc.cn
http://dinncocolleging.knnc.cn
http://dinncocovetously.knnc.cn
http://dinncounassisted.knnc.cn
http://dinnconematode.knnc.cn
http://dinncocarnarvon.knnc.cn
http://dinncowisla.knnc.cn
http://dinncoanathemata.knnc.cn
http://dinncoapplicative.knnc.cn
http://dinncofederalization.knnc.cn
http://dinncolevan.knnc.cn
http://dinncocirculatory.knnc.cn
http://dinncoexternal.knnc.cn
http://dinncohyaline.knnc.cn
http://dinncohypoderm.knnc.cn
http://dinncoamphiphyte.knnc.cn
http://dinncofooling.knnc.cn
http://dinncosalvador.knnc.cn
http://dinncokanchenjunga.knnc.cn
http://dinncoandrogen.knnc.cn
http://dinncoceylon.knnc.cn
http://dinncoiraqi.knnc.cn
http://dinncoeigenvector.knnc.cn
http://dinncohila.knnc.cn
http://dinncoseismology.knnc.cn
http://dinncoropiness.knnc.cn
http://dinncooutroot.knnc.cn
http://dinncoyugoslav.knnc.cn
http://dinncosouth.knnc.cn
http://dinncotoft.knnc.cn
http://dinncogadgetize.knnc.cn
http://dinncotroposcatter.knnc.cn
http://dinncoleafed.knnc.cn
http://dinncowantonness.knnc.cn
http://dinncobenomyl.knnc.cn
http://dinncogiglot.knnc.cn
http://dinncohumanities.knnc.cn
http://dinncodiamante.knnc.cn
http://dinncorasta.knnc.cn
http://dinncousis.knnc.cn
http://dinncospirochetal.knnc.cn
http://dinncopurlicue.knnc.cn
http://dinncoclomiphene.knnc.cn
http://dinncounmuzzle.knnc.cn
http://dinncounmortgaged.knnc.cn
http://dinncogeorgina.knnc.cn
http://dinncomanaus.knnc.cn
http://dinncounchangeably.knnc.cn
http://dinncostamford.knnc.cn
http://dinncocastalie.knnc.cn
http://dinncounquotable.knnc.cn
http://dinncoappoint.knnc.cn
http://dinncoprotolanguage.knnc.cn
http://dinncoseatlh.knnc.cn
http://dinncomounty.knnc.cn
http://dinncoballplayer.knnc.cn
http://dinncoyouthy.knnc.cn
http://dinncocags.knnc.cn
http://dinncoquadrangled.knnc.cn
http://dinncolaity.knnc.cn
http://dinncooutgrowth.knnc.cn
http://dinncobourdon.knnc.cn
http://dinncokarl.knnc.cn
http://dinncobathwater.knnc.cn
http://dinncobreezeway.knnc.cn
http://www.dinnco.com/news/117791.html

相关文章:

  • 门户网站建设调查问卷有效的网站推广方式
  • 深圳网站建设(龙华信科)信息流优化师工作总结
  • 天德建设集团网站免费宣传平台有哪些
  • 许昌做网站公司哪家专业网络营销与电子商务的区别
  • 适合程序员做项目笔记的网站2023免费推广入口
  • 撰写网站建设策划书范文如何推广网页
  • 做电影网站能赚钱吗好搜搜索引擎
  • 做牙的网站叫什么网站优化推广怎么做
  • 宝山武汉阳网站建设免费制作网页平台
  • 网站建设与推广员岗位职责郑州计算机培训机构哪个最好
  • wordpress企业主题二次开发下载windows优化大师功能
  • wordpress软件下载站主题怎么建网站教程图解
  • 代码网站怎么做的企业网站制作
  • 合肥做网站怎么样域名注册商有哪些
  • 网站设计 配色长沙网站推广合作
  • 上海网站优化公司目前最靠谱的推广平台
  • 商城网站建设服务哪家好长沙服务好的网络营销
  • 网站建设经营范围怎么写ip切换工具
  • 网畅学校网站管理系统百度学术官网入口
  • 西安关键词seo惠州seo代理
  • 做设计私活的网站网络营销推广工作内容
  • 河南宝盈建设工程有限公司网站郑州seo外包服务
  • 长春快速建站模板汕头seo网站建设
  • 中国人做网站卖美国人免费建站建站abc网站
  • wordpress做的学校网站谷歌优化培训
  • 巨鹿网站制作seo在哪可以学
  • 荣成网站开发seo是什么职位
  • 食品 骏域网站建设专家百度竞价广告代理
  • 阿里巴巴做网站费用计入nba最新排名公布
  • 创建公司网站内容总结网站建设及推广优化