有一个线性表,采用带头结点的单链表L来存储,设计一个算法将其逆置,且不能建立新节点,只能通过表中已有的节点的重新组合来完成. 分析:线性表中关于逆序的问题,就是用建立链表的头插法.而本题要求不能建立新结点,也就不能把元素重新弄到一个表中.可以将L中的元素作为逆转后的L的元素来源,将L->next设置为空.然后将头结点后的一串结点用头插法逐个插入L中. 伪代码: void reversel(LNode *L) { LNode *p=L->next, *q; L->next=NULL; //…
/*设计一个递归算法,删除不带头结点的单链表L中所有值为x的结点*/ /* 算法思想:设f(L,x)的功能是删除以L为首结点指针的单链表中所有值等于x的结点, 则显然有f(L->next,x)的功能是删除以L->next为首结点指针的单链表中所有值等于x 的结点.递归模型如下: 终止条件:f(L,x)=不做任何事情 若L为空表 递归主体:f(L,x)=删除*L结点;f(L->next,x); 若L->data == x f(L,x)=f(L->next,x) 其他情况 */…
/*一个集合用带头结点的单链表L表示,编写算法删除其值最大的结点.*/ /* 算法思想:使用pre,p,premax,max四个指针,pre和p进行比较,premax和max进行最后的删除操作 通过遍历找到最大的值,后进行删除 */ void Delete_Max(LinkList& L) { LNode *pre = L, *p = L->next; LNode *premax = pre, *max = p; while (p) { if (max->data < p->…
算法复杂度0(n) #!/usr/bin/env python3 class LNode(object): def __init__(self, elem, next_=None): self.elem = elem self.next = next_ class Rm_Small_List(object): def __init__(self): self.head = None self.num = 0 def prepend(self, elem): self.head = LNode(e…
1.带头结点的单链表(推荐使用带头结点的单链表)(采用尾插法) 了解单链表中节点的构成 从上图可知,节点包含数据域和指针域,因此,在对节点进行定义时,我们可以如下简单形式地定义: /* 定义链表 */ typedef struct Node{ int data; // 数据域 struct Node *next; // 指针域(后节点) // struct Node *next; // 指针域(前节点),这里暂时不考虑双链表表 }Node, *LinkedList; 尾插法思想 尾插法的思想其实…
1,不带头结点的单链表操作中,除了InitList(),GetElem(),ListInsert(),ListDelete()操作与带头结点的单链表有差别外,其它的操作基本上一样. 2,不带头结点单链表示意图: 链表指针直接指向了首元节点,因此在首元节点前插入数据元素或者删除首元节点元素都会改变头指针的值. 3,不带头结点的单链表定义及操作集合,除了插入,删除,清空操作需要传递头指针的地址外,基本上一样.头文件defs.h 1 #ifndef _DEFS_H_ 2 #define _DEFS_H…
最近在牛客网上练习在线编程,希望自己坚持下去,每天都坚持下去练习,给自己一个沉淀,不多说了 我遇到了一个用java实现单链表的题目,就自己在做题中将单链表完善了一下,希望大家作为参考也熟悉一下,自己 比较喜欢用java语言,所以就使用java实现单链表了. 为了方便,带头结点的单链表更容易操作和使用,即第一个节点不存储值,可以存储一些标记等 一.创建单链表结构ListNode /** * @ProjectName: JavaPractice * @Package: com.itwang.swor…
本篇文章的代码大多使用无头结点的单链表: 相关定义: #include <stdio.h> #include <stdlib.h> #include <assert.h> typedef int DataType; typedef struct Linklist{ LDataType data; struct Linklist *next; }Linklist,*pLinklist; 相关函数的定义: pLinklist BuyNewNode(LDataType dat…
File name:no_head_link.c Author:SimonKly Version:0.1 Date: 2017.5.20 Description:不带头节点的单链表 Funcion List: *****************************************************/ #include <stdio.h> #include <stdlib.h> typedef struct node { int id; struct node *…
1 # 创建一个节点类 2 class Node: 3 def __init__(self, item): 4 self.item = item 5 self.next = None 6 7 8 # 创建一个单链表类 9 class SingleLink: 10 def __init__(self): 11 self.header = None # 初始化单链表的头结点 12 self.length = 0 # length:单链表的长度 13 14 # 判断单链表是否为空 15 def is_…