建立长度为n的顺序表SeqList,长度n通过和n个数据元素通过键盘输入。
要求:
1)通过调用插入函数,建立一个长度为n的顺序表类的对象,新插入的元素始终插入到第0号位置;
2)在顺序表SeqList中增加一个删除函数,要求删除顺序表中等于item的所有元素。
输入
输入共有三行,第一行是一个整数n,表示线性表的长度; 第二行输入一个整数item,指定被删除的数据元素值; 第三行是输入n个整数数据元素;
输出
第一行输出第一个线性表的所有数据元素; 第二行输出删除指定数据元素后的线性表的所有数据元素;
样例输入
10 55 1 2 33 44 55 55 55 44 55 12
样例输出
12 55 44 55 55 55 44 33 2 1 12 44 44 33 2 1
#include <iostream> #include <stdlib.h> #define Max_size 1000 using namespace std; //顺序表结构 struct Sq_list { int elem[Max_size + 1]; int length; }; //创建并初始化顺序表 int Init_list(Sq_list *L) { L->length = 0; return 0; } int insert(Sq_list *L,int n) { for (int i = n; i >= 1; i--) { int data; cin >> data; L->elem[i] = data; L->length++; } return 0; } //删除指定值元素 int Delete(Sq_list *L,int data) { int length = L->length;//存放表的原长 for (int i = 1; i <= L->length; i++) { if (L->elem[i] == data) { for (int j = i; j < L->length; j++) { L->elem[j] = L->elem[j + 1]; } i--; L->length--; } } if (L->length == length)//判断表长是否发生改变 { cout << "您想要删除的元素不在本链表中" << endl; } return 0; } //遍历顺序表 int show(Sq_list *L) { for (int i = 1; i < L->length; i++) { cout << L->elem[i] << ' '; } cout << L->elem[L->length] << endl; return 0; } int main() { Sq_list L; Init_list(&L); int n; cin >> n; int data; cin >> data; insert(&L,n); show(&L); Delete(&L,data); show(&L); return 0; }