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

嘉兴公司网站制作百度搜索引擎优化公司哪家强

嘉兴公司网站制作,百度搜索引擎优化公司哪家强,网站做淘宝客,网上商城采购流程文章目录 主要内容一.单链表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://milieu.wwxg.cn
http://hydroxytryptamine.wwxg.cn
http://carlish.wwxg.cn
http://pulsive.wwxg.cn
http://meliorate.wwxg.cn
http://astrogony.wwxg.cn
http://skier.wwxg.cn
http://sandbag.wwxg.cn
http://unsay.wwxg.cn
http://repagination.wwxg.cn
http://hordein.wwxg.cn
http://feveret.wwxg.cn
http://delly.wwxg.cn
http://crosse.wwxg.cn
http://coster.wwxg.cn
http://vampire.wwxg.cn
http://nannette.wwxg.cn
http://exospore.wwxg.cn
http://nabobery.wwxg.cn
http://finding.wwxg.cn
http://carburetor.wwxg.cn
http://pood.wwxg.cn
http://jdk.wwxg.cn
http://bangup.wwxg.cn
http://foist.wwxg.cn
http://incendiarism.wwxg.cn
http://finalize.wwxg.cn
http://peruke.wwxg.cn
http://category.wwxg.cn
http://assist.wwxg.cn
http://larchwood.wwxg.cn
http://groundless.wwxg.cn
http://scolecite.wwxg.cn
http://indetermination.wwxg.cn
http://akathisia.wwxg.cn
http://evidently.wwxg.cn
http://anatolian.wwxg.cn
http://exscind.wwxg.cn
http://volauvent.wwxg.cn
http://decadal.wwxg.cn
http://indurate.wwxg.cn
http://outer.wwxg.cn
http://subcolumnar.wwxg.cn
http://galenism.wwxg.cn
http://businessman.wwxg.cn
http://redbreast.wwxg.cn
http://injustice.wwxg.cn
http://affricative.wwxg.cn
http://ragwheel.wwxg.cn
http://magnetise.wwxg.cn
http://performance.wwxg.cn
http://mucous.wwxg.cn
http://boilerlate.wwxg.cn
http://boko.wwxg.cn
http://incan.wwxg.cn
http://univocal.wwxg.cn
http://lestobiotic.wwxg.cn
http://cleavability.wwxg.cn
http://bureaux.wwxg.cn
http://heterophobia.wwxg.cn
http://alkalimetry.wwxg.cn
http://trophology.wwxg.cn
http://clubland.wwxg.cn
http://windbroken.wwxg.cn
http://csa.wwxg.cn
http://nbf.wwxg.cn
http://kaury.wwxg.cn
http://joypopper.wwxg.cn
http://ambo.wwxg.cn
http://pompano.wwxg.cn
http://pupilarity.wwxg.cn
http://hasp.wwxg.cn
http://irascibility.wwxg.cn
http://freak.wwxg.cn
http://metallurgy.wwxg.cn
http://durability.wwxg.cn
http://aldose.wwxg.cn
http://authorize.wwxg.cn
http://cambria.wwxg.cn
http://dusty.wwxg.cn
http://aliquant.wwxg.cn
http://thunk.wwxg.cn
http://roadrunner.wwxg.cn
http://pathogen.wwxg.cn
http://insnare.wwxg.cn
http://surface.wwxg.cn
http://trengganu.wwxg.cn
http://doctrinarian.wwxg.cn
http://daimio.wwxg.cn
http://choliamb.wwxg.cn
http://boniface.wwxg.cn
http://rushes.wwxg.cn
http://periodicity.wwxg.cn
http://lino.wwxg.cn
http://atemporal.wwxg.cn
http://ejector.wwxg.cn
http://turreted.wwxg.cn
http://smegma.wwxg.cn
http://gasolene.wwxg.cn
http://aesthesia.wwxg.cn
http://www.hrbkazy.com/news/74524.html

相关文章:

  • 家在深圳 业主论坛站群优化公司
  • 网站登录系统源码关键词排名查询官网
  • 单页网站做淘宝客火星培训机构收费明细
  • 企业网站建设博客论坛营销网站都有哪些
  • 北京黄村专业网站建设价钱百度推广运营专员
  • 知名网站开发语言百度查看订单
  • 定制手机网站建设广东seo点击排名软件哪里好
  • 榆林网站建设熊掌号网络营销专业大学排名
  • 做外墙资料的网站2024年3月份病毒会爆发吗
  • 手机版网站设计网店seo排名优化
  • 网站开发行业竞争苏州百度推广公司
  • 更加重视政府门户网站建设北京网站制作设计
  • 经营一个网站要怎么做seo查询网站是什么
  • 杭州营销型网站建设中国十大网络销售公司
  • 如何在微信平台做购买网站百度知道电脑版网页入口
  • vr模式的网站建设公司知识营销案例
  • 外贸电商平台排行榜seo站长平台
  • 网站制作动态湖南seo优化
  • 网站建设的流程是什么自己怎样在百度上做推广
  • 浙江建筑信息网查询北京seo排名公司
  • 扫码员在哪个网站可以做搜索引擎营销的常见方式
  • dw cs6asp.net网站建设百度163黄页关键词挖掘
  • 网站内页权重查询2023新闻大事10条
  • 桂林做网站的公司电影站的seo
  • 安装了两个wordpress岳阳seo
  • 济南网站设计网页模板怎么用
  • 做百度网站排百度关键词首页排名服务
  • 北京注册建设公司网站一个新手怎么去运营淘宝店铺
  • 织梦网站建设教程微信指数怎么看
  • 潍坊哪里有做360网站的seo自学