线性表删除第i个元素

简介: 线性表删除第i个元素
// 删除.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//群:970353786
#include <stdio.h>
#include <malloc.h>
#define Maxsize 100
typedef int ElemType;//定义别名  
typedef struct Sqlist
{
  ElemType data[Maxsize];
  int len;//当前长度 
};
//初始化线性表
void Initlist(Sqlist& sq)
{
  sq.len = 0;
}
//求线性表长度
int ListLength(Sqlist sq)
{
  return(sq.len);
}
//删除第i个元素
int ListDelete(Sqlist& sq, int i)
{
  int j;
  if (i<1 || i>sq.len) return 0;//i不合法
  for (j = i; j < sq.len; j++)
  {
    sq.data[j - 1] = sq.data[j];//删除元素后,第i个后面的全部元素全部左移
  }
  sq.len--;//表长就减1
  return 0;
}
int main()
{
  Sqlist sqa;
  int i, j, n, m, s;
  int num;
  printf_s("请输入你要输入多少个数据:");
  scanf_s("%d", &num);
  for (i = 1; i <= num; i++)
  {
    printf_s("请输入链表第 % d个数据:", i);
    scanf_s("%d", &sqa.data[i]);
  }
  sqa.len = num;
  printf_s("删除第几个元素?\n");
  scanf_s("%d", &n);
  if (n > sqa.len)
  {
    printf_s("已经超出范围,无法删除\n");
  }
  else
  {
    ListDelete(sqa, n);
    printf_s("删除的数据为:%d\t", sqa.data[n]);
    printf_s("由于删除一个元素,长度变为:%d\n", ListLength(sqa));
    //printf("%d", sqa.len);//也可以直接打印长度不调用函数
  }
}
// 运行程序: Ctrl + F5 或调试 >“开始执行(不调试)”菜单
// 调试程序: F5 或调试 >“开始调试”菜单
相关文章
|
5月前
【移除链表元素】LeetCode第203题讲解
【移除链表元素】LeetCode第203题讲解
|
13天前
【LeetCode 06】203.移除链表元素
【LeetCode 06】203.移除链表元素
26 0
LeetCode | 203. 移除链表元素
LeetCode | 203. 移除链表元素
|
5月前
|
Java C++ Python
leetcode-203:移除链表元素
leetcode-203:移除链表元素
26 0
|
5月前
leetcode:移除链表元素
leetcode:移除链表元素
|
算法 Java
优雅的删除链表元素
大家好,我是王有志。今天我们尝试使用多种方法,“优雅”的实现链表的删除方法。
136 0
优雅的删除链表元素
【leetCode203】移除链表元素
【leetCode203】移除链表元素
LeetCode203 移除链表元素
方法有多种,针对单链表的操作,这里只写两种比较好理解的
|
算法
LeetCode:203. 移除链表元素
题目描述:给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。