链表的基本操作(元素删除,插入,链表生成,链表倒置)

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
typedef struct stu{
    int d;
    struct stu *l;
}st;
void xj(st *h)//生成单链表
{
    st *l;
    l=h;
    int m;
    scanf("%d",&m);
    h=(st *)malloc(sizeof(st));
    while(m--)
    {
        st *s;
        s=new st;
        scanf("%d",&s->d);
        l->l=s;
        l=s;
    }
    l->l=NULL;
}
void shc(st *h)//输出链表
{
    h=h->l;
    while(h->l!=NULL)
    {
        printf("%d ",h->d);
        h=h->l;
    }
    printf("%d\n",h->d);
}
void chr(st *h)//按大小插入元素
{
    int n;
    scanf("%d",&n);
    h=h->l;
    while(h!=NULL)
    {
      if(n<=h->l->d)
      {
           st *s;
           s=new st;
           s->d=n;
         s->l=h->l;
           h->l=s;
           break;
      }
      else
       h=h->l;
    }
}
void shac(st *h)//删除链表第n个元素
{
    int n;
    scanf("%d",&n);
     int k=0;
    while(h!=NULL)
    {
        if(k==n-1)
        {
          st *s;
          s=new st;
          s=h->l;
          h->l=h->l->l;
          free(s);break;
          }
        h=h->l;
        k++;
    }
}
void dz(st *h)//倒置链表
{
    st *l;
    l=new st;
    l=h->l->l;
    h->l->l=NULL;
    while(l!=NULL)
    {
      st *s;
      s=new st;
      s->d=l->d;
      s->l=h->l;
      h->l=s;
      l=l->l;
    }
}
int main()
{
    st *h,*h1;
    h=new st;
    h1=new st;
    h=h1;
    xj(h);
    h=h1;
    shc(h);
    h=h1;
    chr(h);
    h=h1;
    shc(h);
    h=h1;
    shac(h);
    h=h1;
    shc(h);
    h=h1;
    dz(h);
    shc(h);
    return 0;
}
时间: 2025-01-12 10:19:27

链表的基本操作(元素删除,插入,链表生成,链表倒置)的相关文章

链表的基本操作,删除插入。

lass Node { int val; // data | element Node next; // 如果 next == null 表示是最后一个结点 Node(int val) { this.val = val; this.next = null; } public String toString() { return String.format("Node(%d)", val); } } public class MyLinkedList { public static vo

单向链表的基本操作-创建、插入、删除

一.链表的基本概念 单链表 :  n个结点链接成一个链式线性表的结构叫做链表,当每个结点中只包含一个指针域时,叫做单链表 表头结点:链表中的第一个结点,包含指向第一个数据元素的指针以及链表自身的一些信息 如长度等 ??数据结点:链表中代表数据元素的结点,包含指向下一个数据元素的指 ??尾结点:   链表中的最后一个数据结点,其下一元素指针为空,表示无后继  二.链表的定义 由于带头的链表操作比较方便,下文介绍的所有操作都是基于都头结点的单链表, 1.链表的定义 1 /* 链表节点的定义 */ 2

链表 | 将递增有序的两个链表的公共元素合并为新的链表

王道P38T14 主代码: LinkList common_subList(LinkList &A,LinkList &B){ LNode *C=new LNode,*pC=C; C->next=NULL; LNode* pA=A->next,*pB=B->next; while(pA!=NULL && pB!=NULL){ if(pA->data < pB->data){ pA=pA->next; }else if(pA->

线性表之单向链表的基本操作实现

这篇文章用来回顾单向链表的相关知识并实现如下几个操作: 初始化 插入 删除 逆置 销毁 且实现的链表为带头节点的单线非循环链表.由于链表在尾插入时需要遍历到链表的最后一个位置,所以我需要记住最后一个节点的位置,为此,本文会简单的实现一个单向链表的类. 0.链表的定义与类中提供的API 1 typedef int ELEMENT; 2 3 struct Node_s { 4 Node_s():data(),NEXT(nullptr){} 5 ELEMENT data; 6 Node_s * NEX

线性链表的基本操作(删除,插入等)

主要内容如题,由于感觉自己对链表这块的知识真的很薄弱. 我之前还时不时的去看链表相关的知识,也算是复习把,但是效果不尽人意. 时间可以淡忘一切,有的很慢,有的很快,而我感觉自己对链表的学习则是一瞬的时间. 哈哈,当然也没有这么夸张啦. 还是觉着把单链表的基本操作自己再撸一遍,这个感觉很有必要. 果然在编写的过程中发现很多问题,不过好在有些不太好理解的部分后面在草稿纸上画了一下才顺利编写出对应的代码.   我把代码贴上来也方便失忆后的恢复对链表的记忆.我估计后面自己看代码都有可能看不太明白.  

单链表的初始化,整表创建,单个元素插入,单个元素删除,整表删除等操作

很早之前学的数据结构,放了很久后,以致对里面的一些操作都有些遗忘,故而再次温习了一下数据结构,并整理了一点儿笔记,放在这里和大家分享, 我的代码注释的已经很详细了,对于容易出错的地方我也都有标注,欢迎大家交流. #include "stdafx.h" #include <stdio.h> #include <malloc.h> #include <stdlib.h> #include <time.h> #define OK 1 #defi

数据结构:链表的基本操作(创建,删除,插入,逆序,摧毁)

代码注释比较详细: #include <iostream> #include <cstdlib> using namespace std; struct Node{ int data; Node* next; }; Node* head = NULL; bool create() { head = (Node*)malloc(sizeof(Node)); if(NULL == head) return false; head->data = 0; head->next

生成单向链表 并删除链表中某个元素

leetcode 题目描述: Remove all elements from a linked list of integers that have value val. Example Given: 1 --> 2 --> 6 --> 3 --> 4 --> 5 --> 6, val = 6 Return: 1 --> 2 --> 3 --> 4 --> 5 生成链表 若输入元素不为0,则加入到链表尾部,若为0,不加入,且生成链表工作完成.代

头插法链表的基本操作:创建空链表,插入结点,遍历链表,求链表长度,查找结点,删除结点

1 #include <stdio.h> 2 #include <stdlib.h> 3 /* 4 头插法链表的基本操作:创建空链表,插入节点,遍历输出节点数据,求链表长度,查找结点,删除结点. 5 */ 6 typedef struct node 7 { 8 int data; 9 struct node * next; 10 }NODE; 11 //创建空链表 12 NODE * createList() 13 { 14 NODE * head = (NODE *)malloc

静态链表 初始化 定位 Malloc Free 插入 删除

#include <stdio.h> #include <stdlib.h> #define OK 1 #define TRUE 1 #define ERROR -1 #define FALSE -1 #define OVERFLOW -2 #define ElemType int #define Status int typedef int ElemType typedef int Status #define MAX_SIZE 1000;//表最大空间 /* //线性表的基本操