概述
//线性表的存储结构
#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;
}
测试效果:
最后
以上就是冷傲饼干为你收集整理的线性表的创建,增加,插入,删除(代码)_数据结构学习记录(一)的全部内容,希望文章能够帮你解决线性表的创建,增加,插入,删除(代码)_数据结构学习记录(一)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复