单链表相关操作

struct ListNode {
    int val;
    ListNode *next;
};

ListNode* createListFromHead()
{
    ListNode *list = (ListNode*)malloc(sizeof(ListNode));
    list->next = NULL;
    ListNode *s;
    int x;
    while (cin >> x)
    {
        s = (ListNode*)malloc(sizeof(ListNode));
        s->val = x;
        s->next = list->next;
        list->next = s;
    }
    return list;
}

ListNode* createListFromTail()
{
    ListNode *list = (ListNode*)malloc(sizeof(ListNode));
    list->next = NULL;
    ListNode *s;
    int x;
    ListNode *p = list;
    while (cin >> x)
    {
        s = (ListNode *)malloc(sizeof(ListNode));
        s->val = x;
        p->next = s;
        p = s;
    }
    p->next = NULL;
    return list;
}

  以后再补!!!

时间: 2024-07-30 10:05:56

单链表相关操作的相关文章

java数据结构:单链表常见操作代码实现

一.概述: 本文主要总结单链表常见操作的实现,包括链表结点添加.删除:链表正向遍历和反向遍历.链表排序.判断链表是否有环.是否相交.获取某一结点等. 二.概念: 链表: 一种重要的数据结构,HashMap等集合的底层结构都是链表结构.链表以结点作为存储单元,这些存储单元可以是不连续的.每个结点由两部分组成:存储的数值+前序结点和后序结点的指针.即有前序结点的指针又有后序结点的指针的链表称为双向链表,只包含后续指针的链表为单链表,本文总结的均为单链表的操作. 单链表结构: Java中单链表采用No

单链表插入操作

URL:http://jpkc.onlinesjtu.com/CourseShare/Courses/ResourceModule/PreReading.aspx?courseid=701018&nodid=238&chapterid=238&preid=16 单链表的插入操作 1)已知线性链表head,在p指针所指向的结点后插入一个元素x. 在一个结点后插入数据元素时,操作较为简单,不用查找便可直接插入. 操作过程如下图所示: 相关的语句如下: { s=(slnodetype*)

基于单链表的操作

单链表 功能设计 1从首元结点开始输出数据域即p->data直到p->next=NULL.typedef struct Node 定义一个链式存储的单链表Node *为结构体指针类型例如对于单链表Lp=L-〉next通过p->data 访问该元素的数据值. 2creatlist(linklist *H) 从空表开始每次读入数据生成新结点将读入的数据存放到新结点的数据域中然后将新结点插入到当前链表的表头结点之后直至读入结束位置为止. 3Leng(linklist *H ) 在单链表中整个链

单链表的操作和指针函数基础

/* ============================================================================ Name : TestLinkedList.c Author : lf Version : Copyright : Your copyright notice Description : 1 单链表的增删改查等操作 2 指针函数的使用.如示例中的:void (*visit)(link) ==========================

线性单链表的操作

#include <stdio.h> #include <stdlib.h> #define OK 1 #define ERROR 0 #define TRUE 1 #define FALSE 0 #define INFEASIBLE -1 #define OVERFLOW -2 /* #define ElemType int #define Status int */ typedef int ElemType; typedef int Status; /* #define LNo

数据结构之 线性表---单链表的操作B(先逆序+再删除重复元素)

数据结构上机测试2-2:单链表操作B Time Limit: 1000MS Memory limit: 65536K 题目描述 按照数据输入的相反顺序(逆位序)建立一个单链表,并将单链表中重复的元素删除(值相同的元素只保留最后输入的一个). 输入 第一行输入元素个数n: 第二行输入n个整数. 输出 第一行输出初始链表元素个数: 第二行输出按照逆位序所建立的初始链表: 第三行输出删除重复元素后的单链表元素个数: 第四行输出删除重复元素后的单链表. 示例输入 10 21 30 14 55 32 63

合并两个有序单链表的操作

/*以合并两个2个长度均为n的递增单链表为例 演示连个单链表的合并操作*/ #include<iostream>#include<algorithm>#include<cstring>#include<vector>#include<stdio.h>#include<queue>#include<math.h>#define INF 0x3f3f3f3f#define MAX 1000005#define Temp 100

数据结构——单链表及其操作

1 #include<iostream> 2 #include<string> 3 #include<stdlib.h> 4 5 using namespace std; 6 7 typedef int ElemType; 8 typedef int Status; 9 #define OK 1 10 #define ERROR 0 11 12 13 //单链表的存储结构 14 typedef struct LNode 15 { 16 ElemType data; //

数据结构(C语言版)链表相关操作算法的代码实现

这次实现的是带头结点的单链表的初始化.遍历.创建.插入.删除.判断链表是否为空.求链表长度函数,编译环境是vs2013. 其中插入和删除函数中循环的条件目前还不太明白. #include<iostream> using namespace std; typedef int Status; typedef char Elemtype; //定义链表的存储结构,注意这里与算法的定义有一处不同,是定义结构体时就命名Lnode,说明*next的类型只要说是Lnode类型就可以 typedef stru