我是靠谱客的博主 冷傲饼干,最近开发中收集的这篇文章主要介绍线性表的创建,增加,插入,删除(代码)_数据结构学习记录(一),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

//线性表的存储结构
#include<stdio.h>
#include<iostream>
#include<conio.h>
#include<stdlib.h>
using namespace std;
#define LISTSIZE 100  //假设表容量100
typedef int DataType;
typedef struct SeqList {
	DataType data[LISTSIZE];//数组data用于存放表结点,数据长度是表中能保存的数据元素的最多的个数,固定值  这里给的是100
	int length;//当前表的长度 (节点个数)       线性表长度是表中已经保存的数据元素个数,随时变化的值
}SeqList;  //结构体别名
void InitList(SeqList* L);
int LengthList(SeqList* L);
DataType GetList(SeqList* L, int i);
int InsertList(SeqList* L, DataType t, int i);
int DeleteList(SeqList* L, int i);
int LocateList(SeqList* L, DataType t);
void show(SeqList* L);
int input(SeqList* L, int n);
int main() {
	SeqList L;
	int n;
	InitList(&L);
	cout << "线性表已经初始化完毕" << endl;
	cout << "请输入元素个数:" << endl;
	cin >> n;
	input(&L, n);
	cout << "线性表为:";
	show(&L);

	cout << "请输入插入元素的位置和元素:" << endl;
	int i, t;
	cin >> i >> t;
	InsertList(&L, t, i);
	cout << "目前线性表为:";
	show(&L);
	cout << "请输入想要删除的元素位置:";
	int d;
	cin >> d;
	DeleteList(&L, d);
	cout << "当前顺序表为:";
	show(&L);
	cout << "感谢您的测试,再见" << endl;
	return 0;
}

void InitList(SeqList* L) {//初始化 表长设置为0
	L->length = 0;
}
int LengthList(SeqList* L) {//表长
	return L->length;
}
DataType GetList(SeqList* L, int i) {//返回顺序表中第i个结点的值
	return L->data[i - 1];
}
int InsertList(SeqList* L, DataType t, int i) {
	//将t插入到表L的第i个结点上的位置
	if (i <= 1 || i >= L->length + 1) {
		cout << "插入的位置错误不再表内" << endl;
		return 0;
	}
	if (L->length == LISTSIZE) {
		cout << "表满了不能插入了" << endl;
		return 0;
	}
	for (int j = L->length - 1; j >= i - 1; j--) {
		L->data[j + 1] = L->data[j];//将节点向后移动
	}
	L->data[i - 1] = t;
	L->length++;
	return 1;//代表返回正常
}
int DeleteList(SeqList* L, int i) {
	if (i < 1 || i >= L->length + 1) {
		cout << "删除位置错误" << endl;
	}
	if (L->length == 0) {
		cout << "空表不能删除!" << endl;
	}
	for (int j = i; j <= L->length - 1; j++) {
		L->data[j - 1] = L->data[j];
	}
	L->length--;
	return 1;
}
int LocateList(SeqList* L, DataType t) {//查找为t的结点
	for (int j = 1; j <= L->length; j++) {
		if (L->data[j - 1] == t) {
			cout << "位置是:" << j << endl;
		}
	}
	return -1;
}
void show(SeqList* L) {//打印表
	for (int j = 0; j < LengthList(L); j++) {
		cout << L->data[j] << "  ";
	}
	cout << endl;
}
int input(SeqList* L, int n) {//输入
	if (n<0 || n>LISTSIZE) {
		cout << "超出了表的容量长度" << endl;
	}
	cout << "请输入元素:" << endl;
	for (int j = 0; j < n; j++) {
		cin >> L->data[j];
		L->length++;
	}
	return 1;
}

测试效果:
在这里插入图片描述

最后

以上就是冷傲饼干为你收集整理的线性表的创建,增加,插入,删除(代码)_数据结构学习记录(一)的全部内容,希望文章能够帮你解决线性表的创建,增加,插入,删除(代码)_数据结构学习记录(一)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部