精华内容
下载资源
问答
  • 怎么输出链表
    2022-02-11 23:41:11

    给定链表,将链表上的元素逆序输出

     解题思路,后入先出,这是栈的思想,可以用一个辅助栈将链表上的元素进行逆转。
    1.将链表上的数据复制到栈中。
    2.将栈上的元素逐个出栈,直到栈为空。可以用vector来储存,而不必考虑内存大小。
    3.将储存了逆序元素的容器返回。

    题解

    /**
     * Definition for singly-linked list.
     * struct ListNode {
     *     int val;
     *     ListNode *next;
     *     ListNode(int x) : val(x), next(NULL) {}
     * };
     */
    class Solution {
       
    public:
        vector<int> reversePrint(ListNode* head
    更多相关内容
  • # 题目:反向输出一个链表
  • 主要介绍了C语言实现输出链表中倒数第k个节点,主要涉及链表的遍历操作,是数据结构中链表的常见操作。需要的朋友可以参考下
  • 输出链表(c语言)

    千次阅读 2021-07-21 09:36:11
    输出链表描述格式样例题解及详细注释 描述 根据给定的数据建立一个由n(n≤1000)个元素组成的链表,然后按逻辑顺序输出其中所有的数据。 每个元素节点由两个域组成:第一个域存储数据,第二个域存储后继元素所在的...

    描述

    根据给定的数据建立一个由n(n≤1000)个元素组成的链表,然后按逻辑顺序输出其中所有的数据。

    每个元素节点由两个域组成:第一个域存储数据,第二个域存储后继元素所在的位置。特别的,头结点的第一个域用来存储整个链表的长度。例如头结点(5, 3)表示长度为5,后继元素在3号位置;元素节点(14,7)表示数据值为14,后继节点在7号位置。如果后继指针为0则表示链表结束。

    例如: (6, 6)(673, 4)(428, 1)(685, 2)(170, 0)(488, 3)(519, 5)

    第一个元组(6,6)是头结点,它所表示的链表逻辑顺序是:519, 488, 685, 428, 673, 170

    格式

    输入格式
    第一行是头结点,有两个正整数,第一个数表示链表的长度,第二个整数表示后继节点的位置
    从第二行到最后一行每行一个元素,第一个整数表示该元素存储的数据,第二个整数表示后继节点所在的位置。

    输出格式
    只有一行,按照逻辑顺序输出所有的元素数据,中间以空格分隔

    样例

    输入样例
    7 7
    483 2
    330 4
    86 1
    797 5
    36 6
    820 0
    965 3
    输出样例
    965 86 483 330 797 36 820

    题解及详细注释

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #define maxn 1001
    
    //根据题意,定义顺序表的结构体
    struct
    {
        int num;//存储数值
        int next;//存储指向下一个数的下表
    }d[maxn];
    
    int main()
    {
        int n,m,ans[1005];
        scanf("%d%d",&n,&m);
        memset(ans,0,sizeof(ans));//对ans清零
        d[0].num=n;
        d[0].next=m;
        for(int i=1;i<=n;i++)//遍历输入
        {
            scanf("%d%d",&d[i].num,&d[i].next);
        }
        int i=0;
        while(m!=0)
        {
            ans[i]=d[m].num;
            m=d[m].next;
            i++;
        }
        for(i=0;i<n;i++)//遍历输出
        {
            printf("%d ",ans[i]);
        }
    }
    

    在这里插入图片描述

    望评论区指教。
    写于2021年7月21日9:44分。刚才想打lol,但是太菜了,被封号一天,只得又来码字。

    展开全文
  • 删除链表中重复元素

    一般输入输出链表就是以数组为输入在这里插入代码片,然后写一个函数转换为链表。

    • 以删除链表中重复元素为例写了个代码:
    class ListNode:
        def __init__(self, x):
            self.val = x
            self.next = None
    
    class LinkList:
        def __init__(self):
            self.head = None
    
        def initList(self, data):
            # 创建头结点
            self.head = ListNode(data[0])
            r = self.head
            p = self.head
            # 逐个为 data 内的数据创建结点, 建立链表
            for i in data[1:]:
                node = ListNode(i)
                p.next = node
                p = p.next
            return r
    
        def printlist(self, head):
            if head == None: return
            node = head
            while node:
                print(node.val,end='')
                if node.next:
                    print(',',end='')
                node = node.next
    
    class Solution:
        def deleteDuplicates(self, head: ListNode) -> ListNode:
            if not head:
                return head
            cur = head
            while cur.next:
                if cur.val == cur.next.val:
                    cur.next = cur.next.next
                else:
                    cur = cur.next
            return head
    
    
    if __name__ == '__main__':
        arr = input('')
        num = [int(n) for n in arr.split(',')]
        ans = Solution()
        l = LinkList()
        l1 = l.initList(num)
        l.printlist(ans.deleteDuplicates(l1))
    
    
    展开全文
  • 逆序输出链表描述格式样例题解及详细注释 描述 根据给定的数据建立一个由n(1≤n≤1000)个元素组成的链表,然后按逻辑顺序逆序输出其中所有的数据。 每个元素节点由两个域组成:第一个域存储数据,第二个域存储后继...

    描述

    根据给定的数据建立一个由n(1≤n≤1000)个元素组成的链表,然后按逻辑顺序逆序输出其中所有的数据。

    每个元素节点由两个域组成:第一个域存储数据,第二个域存储后继元素所在的位置。特别的,头结点的第一个域用来存储整个链表的长度。例如头结点(5, 3)表示长度为5,后继元素在3号位置;元素节点(14,7)表示数据值为14,后继节点在7号位置。如果后继指针为0则表示链表结束。

    例如: (6, 6)(673, 4)(428, 1)(685, 2)(170, 0)(488, 3)(519, 5)

    第一个元组(6,6)是头结点,此链表逆序为:170,673,428,685,488,519

    再比如: (8, 7)(821, 2)(677, 3)(614, 5)(723, 1)(487, 6)(680, 8) (45, 4)(843, 0)

    逆序数据为:843, 680, 487, 614, 677,821,723,45

    格式

    输入格式
    第一行是两个正整数,表示头结点,第一个正整数是链表的长度,第二个正整数是它的后继。
    从第二行到最后一行,每行表示一个元素,第一个正整数是元素中存储的数据,第二个整数是它的后继,如果为0则表示最后一个元素。

    输出格式
    一行数据,每个数据之间以空格分隔。

    样例

    输入样例
    5 2
    426 3
    797 1
    970 4
    481 5
    170 0
    输出样例
    170 481 970 426 797

    题解及详细注释

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #define maxn 1001
    
    //根据题意,定义结构体
    struct
    {
        int num;
        int next;
    }d[maxn];
    
    int main()
    {
        int n,m,ans[1005];//创建ans数组是为了存储要输出的数
        scanf("%d%d",&d[0].num,&d[0].next);
        n=d[0].num;
        m=d[0].next;
        memset(ans,0,sizeof(ans));//把0赋给ans数组的每一个数
        for(int i=1;i<=n;i++)//遍历输入
        {
            scanf("%d%d",&d[i].num,&d[i].next);
        }
        int i=0;
        while(m!=0)
        {
            ans[i]=d[m].num;//把值赋给ans
            m=d[m].next;
            i++;
        }
        for(i=n-1;i>=0;i--)//因为逆序,所以从后面开始遍历输出ans数组
        {
            printf("%d ",ans[i]);
        }
     }
    

    在这里插入图片描述
    还望评论区指教。
    写于2021年7月21日9:00,说是台风,不过雨也不大,估计雨势还没完全到来。

    展开全文
  • 主要介绍了Java输出链表倒数第k个节点的相关内容,涉及三种设计思路及代码示例,具有一定参考价值,需要的朋友可以了解下。
  •  4:一般的处理新建一些节点,链表都能实现这个功能;但是为了节省空间复杂度,一般尽量利用单一变量在原链表上做出修改。除非有些情况无法处理,新建数组或者链表存储数据。  5:所以对于新建链表,一般仍然...
  • #include #include #define LEN sizeof(struct Stuent) struct Student { long num; float score; struct student * next;...2、结构体和指针在链表中使用的很广泛...3、链表和图一样,有单链表、双链表、环形链表
  • 采用尾插法建立单链表并输出链表

    千次阅读 2020-10-01 18:36:24
    代码如下`` #include<stdio.h> #include<stdlib.h> typedef int DataType; struct Node { DataType data; struct Node* next; }; typedef struct Node *PNode; ... LinkList head =
  • //例9.10 建立一个输出学生学号、成绩的动态链表 #include<stdio.h> #include<malloc.h> struct STUDENT { long num; float socre; struct STUDENT* next; }; int n=0; struct STUDENT* creat(); ...
  • 剑指offer:输入一个链表,反转链表后,输出链表的所有元素。 两种思路: 思路1:建立节点指针类型堆栈,遍历链表,将指针压栈,顺次出栈,实现反转。这个占用内存空间较大。 思路2:依次遍历链表,改变节点的...
  • 链表的专业术语:  首节点:存放第一个有效数据的节点 尾节点:存放最后一个有效数据的节点 头结点: 1.头结点的数据类型和首节点的数据类型是一模一样的 2.头结点是首节点前面的那个节点 3.头结点并不存放...
  • 尾插法建立单链表,并输出链表

    千次阅读 2020-03-05 16:47:39
     printf("打印输出链表: \n");  while(p)  {  printf("%d\t",p->data);  p=p->next;  } } int main() {  printf("Hello world!\n");  insert();  print();  return 0; }  
  • 逆序输出链表(递归)---C++实现

    千次阅读 2019-05-21 10:44:25
    **顺序输出链表** void printList(node* head) { if (!head) return; cout << head->data << " "; printList(head->next); } **逆序输出链表** void printListByReverseOrder(node* head) {...
  • 输入一个链表,反转链表后,输出链表的所有元素。 思路在代码里: public class ListNodeReverse { public ListNode ReverseList(ListNode head) { if (head == null) return null; ListNode newHead = ...
  • // 新链表的头结点就是原链表的尾结点   return  pPre;  }      void  printList(ListNode last) {  while  (last !=  null ) {  System.out.print(last.val +  "," );  last = last.next;  ...
  • 输出链表倒数节点

    2019-09-01 16:36:13
    输入一个链表输出链表中倒数第k个结点。 public class Solution { public ListNode FindKthToTail(ListNode head,int k) { ListNode quick=head; ListNode slow=head; if(k<=0){ ret...
  • L是一个带头结点的单链表,函数ListLocate_L(LinkList L, ElemType x)要求在链表中查找第一个数据域取值为x的节点,返回其位序(从1开始),查找不到则返回0。例如,原单链表各个元素节点的元素依次为1,2,3,4,则...
  • /*综合本章例9.9(建立链表的函数creat)、例9.10(输出链表的函数print)和本章习题 第7题(删除链表中结点的函数del)、第8题(插入结点的函数insert),再编写一个主函数, 先后调用这些函数。用以上五个函数组成...
  • 文章目录输出链表中倒数第k个结点问题描述方法一方法描述动画演示代码如下方法二方法描述动画演示代码如下 输出链表中倒数第k个结点 问题描述 给你一个单链表,输出倒数第k个结点,如下图链表中,输出倒数第k个结点...
  • c代码-奇数节点和偶数节点分别排在一起_链表
  • 链表中倒数第k个结点

    2020-12-22 16:31:26
    输入一个链表输出链表中倒数第k个结点 解题思路 本题的思路和之前看矩形那一题有相似之处,就是我们优先考虑边界情况,比如本题,我们需要查找链表中的倒数第K个节点,那么想象此时身处链表最后的位置,我想要...
  • 输入一个链表,反转链表后,输出链表的所有元素。 public class Solution { public ListNode ReverseList(ListNode head) { if(head==null){ return null; } ListNode hea=new ListNode(0); hea.next=he
  • 反向输出链表的两种方法

    千次阅读 2018-10-02 10:13:29
    ①不改变链表的结构(利用递归的本质是利用栈) void Reve_list(listnode* phead) { if(phead!=NULL) { if(phead-&gt;next!=NULL) { Reve_list(phead-&gt;next); } printf("%d\t",...
  • 输出链表倒数第n个节点数据

    千次阅读 2014-03-25 14:30:47
    1. 链表头指针为空,n小于等于0是错误输入 2. 链表实际节点数小于n 因此代码: #include #include typedef struct node{ int a; struct node *link; }mynode; int creat_tail(mynode *head,int n){

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 306,895
精华内容 122,758
关键字:

怎么输出链表