(四)线性表的顺序实现及相关操作
2012-05-07 20:42
465 查看
#include<iostream> using namespace std; #define MaxSize 1000 #define error -1 typedef struct { int data[MaxSize];//存放数据表元素 int length;//顺序表长度 }SqList; void InitList(SqList &l)//初始化顺序表 { //l.length = 20; cout<<"输入要加入链表中的元素值:"; for(int i = 0;i<l.length;i++) { cin>>l.data[i]; } } void printList(SqList l) { cout<<"表中的元素为:"; for(int i = 0;i<l.length;i++) { cout<<l.data[i]<<" "; } cout<<endl; } int GetElement(SqList l,int i,int &e)//查找第i位置的元素e { if(i<0||i>l.length) return error; e=l.data[i-1]; return 1; } int LocateElement(SqList l,int e)//按元素位置查找 { for(int i = 0;i<l.length;i++) { if(l.data[i]==e) return i+1; } return -1; } int InsertElement(SqList &l,int i,int e)//在第i位置插入元素e { if(i<1||i>l.length+1) return 0; for(int j=l.length;j>=i-1;j--) { l.data[j] = l.data[j-1]; } l.data[i-1]=e; l.length++; return 1; } void deleteAll(SqList &l,int ele)//删除所有值为ele的元素 { int i = 0; while(i<l.length&&l.data[i]!=ele) { i++; } for(int j = i+1;j<l.length;j++) { if(l.data[j]!=ele) l.data[i++]=l.data[j]; } l.length = i; } void move(SqList &l)//将表中大于零的元素移植首部小于零的移植尾部 { int i = 0; int j = l.length-1; while(i<j) { while(i<j&&l.data[i]>=0) { i++; } while (i<j&&l.data[j]<0) { j--; } if(i<j) { int temp; temp = l.data[i]; l.data[i] = l.data[j]; l.data[j]= temp; } } } void deleteSame(SqList &l)//去除重复的元素 { int i,j,k; j = 0; for (i=0;i<l.length;i++) { k = 0; while (k<=i&&l.data[k]==l.data[i]) { k++; } if(k==0)//第i个元素和前i-1个都不相同,加入到l.data[j]中 { j++; l.data[j]=l.data[i]; } } l.length = j+1; } int main() { SqList list; cout<<"输入链表长度:"; cin>>list.length; InitList(list); printList(list); // // move(list); /* printList(list);*/ deleteSame(list); printList(list); int e; cout<<"输入要查找的位置:"; int location; cin>>location; GetElement(list,location,e); cout<<"第"<<location<<"个位置的元素值为:"<<e<<endl; int place,ele; cout<<"输入要插入的位置"; cin>>place; cout<<"输入要插入的值:"; cin>>ele; InsertElement(list,place,ele); printList(list); int element; cout<<"输入要查找的值:"; cin>>element; cout<<element<<"在表中的位置:"<<LocateElement(list,element)<<endl; int a; cout<<"输入要删除的元素值"; cin>>a; deleteAll(list,a); printList(list); return 0; }
相关文章推荐
- 线性表的顺序存储实现及相关操作 C语言版
- 线性表的顺序存储实现及相关操作 C语言版
- 【线性表】顺序存储、链式存储的实现及操作
- 数据机构(10)--顺序循环队列的实现及相关操作
- 数据结构-线性表的顺序存储实现及各种操作代码
- 线性表的顺序表示和实现基本操作之插入元素
- python实现线性表顺序存储的插入操作
- (C语言版)栈和队列(二)——实现顺序存储栈和顺序存储队列的相关操作
- 静态顺序表的实现及相关操作源代码(插入,删除,排序,逆置,超详细)
- 线性表的顺序表示和基本操作的实现
- 线性表的存储以及相关操作实现
- 线性表(顺序表)相关操作的c++代码
- 线性表的顺序存储及操作实现
- java实现线性表的顺序存储操作
- 顺序线性表的基本操作(C语言实现)
- 线性表之顺序表相关操作(java版)
- C++实现顺序结构线性表的基本操作
- 顺序线性表的实现及操作(C语言实现)
- 线性表的基本操作实现及其应用之顺序表的建立与操作实现
- 线性表顺序存储的各项操作的实现