数据结构(寒假小结)——2.1线性表之顺序表
2016-01-25 20:27
603 查看
1、本节学习要点:
(1).基本定义
(2).基本运算
(3).经典案例:A与B的并集
.2、基本定义:
![](http://img.blog.csdn.net/20160125201006956)
3、基本运算:
4、经典案例:A与B的并集:
如果有错误请大家指出,共同学习共同进步!更多百度百科
![](http://static.blog.csdn.net/xheditor/xheditor_emot/default/struggle.gif)
(1).基本定义
(2).基本运算
(3).经典案例:A与B的并集
.2、基本定义:
3、基本运算:
#include<iostream.h> typedef int datatype;//结点的数据类型,假设为int const int maxsize=100;//最大表长度,假设为100 typedef struct { datatype data[maxsize]; //第一个结点是data[0] int n; //当前长度 } sqlist; //顺序表类型 //将x插入到顺序表L的第i个位置上 int insert(sqlist *L,datatype x,int i){ int j; if(L->n==maxsize) {cout<<"表满,不能插入!(上溢)\n";return 1;} if(i<1 || i>L->n+1) {cout<<"非法插入位置!\n";return 0;} for(j=L->n;j>=i;j--) L->data[j]=L->data[j-1]; //结点后移 L->data[i-1]=x; //插入x,第i个结点的数组下标是i-1 L->n++; //修改表长 return 1; //插入成功 } //从顺序表中删除第i个位置上的结点 int deletes(sqlist *L,int i){ int j; if(L->n==0) {cout<<"表空,不能删除!(下溢)\n";return 1;} if(i<1 || i>L->n) {cout<<"非法删除位置!\n";return 0;} for(j=i+1;j<=L->n;j++) L->data[j-2]=L->data[j-1]; //结点前移 L->n--; //修改表长 return 1; //删除成功 } //从顺序表中定位数据 int locate(sqlist *L,datatype x) { int i; i=1; while(i<=L->n && L->data[i-1]!=x) i++; if(i<=L->n) return i; //找到 else return 0; //未找到 } //输出顺序表 void print(sqlist *L){ cout<<"The sqlist is: "<<endl; for(int i=0;i<L->n;i++){ cout<<L->data[i]<<" "; } cout<<endl; } void main(){ int d[10]={1,1,2,3,4,7,8,9,6,5};//数据源,当然也可以通过输入,这里不写了 sqlist *L=new sqlist;//实例化sqlist类型 L->n=10; //顺序表中的字符初始化 for(int i=0;i<10;i++){ L->data[i]=d[i]; } cout<<"Before insert..."<<endl; print(L); //调用插入 cout<<"After insert..."<<endl; insert(L,17,5); print(L); //调用删除 // deletes(L,2); //调用定位 // locate(L,2) }
4、经典案例:A与B的并集:
#include<iostream.h> typedef int datatype; //线性表结点的数据类型 const int maxsize=100; //线性表可能的最大长度,假设为100 //每个线性表都是一个struct类型的结点(声明为sqlist类型),这个struct类型结构如下: struct sqlist{ // 也就是说,每个线性表都是sqlist类型,这个sqlist类型是用户自定义的结构类型,跟int一样可以用来说明变量 datatype data[maxsize]; // 线性表的内容存放在一个data数组当中 int n; // 线性表的长度用变量n来记录 }; //定位操作 int locate(sqlist *L,datatype x) { int i; i=1; while(i<=L->n && L->data[i-1]!=x) i++; if(i<=L->n) return i; //找到 else return 0; //未找到 } //求集合交集 void intersection(sqlist *A,sqlist *B) { int m,n,i,k,s=0; datatype x; for(i=0;i<A->n;i++) { x=A->data[i]; //在A中取一元素 k=locate(B,x); //在B中查找它 if(k==0) s++; //k==0表示未在B中找到该元素 else if(s>0) A->data[i-s]=A->data[i]; } A->n=A->n-s; } //输出顺序表 void print1(sqlist *L){ cout<<"The sqlist is: "<<endl; for(int i=0;i<L->n;i++){ cout<<L->data[i]<<" "; } cout<<endl; } int main(){ sqlist *sq1=new sqlist; //为sq1开辟内存空间,如果缺少new,则sq1未被初始化! sqlist *sq2=new sqlist; int n1,n2,i,position; cout<<"How many elements of the sqlist 1?"<<endl; cin>>n1; sq1->n=n1; cout<<"Input the "<<n1<<" elements of the sqlist 1:"<<endl; for(i=0;i<n1;i++){ cin>>sq1->data[i]; } cout<<"How many elements of the sqlist 2?"<<endl; cin>>n2; sq2->n=n2; cout<<"Input the "<<n2<<" elements of the sqlist 2:"<<endl; for(i=0;i<n2;i++){ cin>>sq2->data[i]; } intersection(sq1,sq2); print1(sq1); return 0; }
如果有错误请大家指出,共同学习共同进步!更多百度百科
![](http://static.blog.csdn.net/xheditor/xheditor_emot/default/struggle.gif)
![](http://static.blog.csdn.net/xheditor/xheditor_emot/default/struggle.gif)
相关文章推荐
- 小蚂蚁学习数据结构(24)——求二叉树深度和度为2的节点个数代码实现
- WebService推送数据,数据结构应该怎样定义?
- 数据结构 、 多线程 系列文章
- 数据结构——栈
- 数据结构之Shapefile
- 数据结构之队列
- 数据结构之栈
- Shapefile数据结构
- 数据结构学习笔记——数组与矩阵压缩
- Redis 之数据结构
- 51nod1109 01组成的倍数 数据结构
- 七.学习数据结构之树
- C++ —— 数据结构之 顺序栈,链式栈?
- UVA 12096 The SetStack Computer
- 六.学习数据结构之递归
- opencv从入门到精通(4)--IplImage数据结构
- 学习STL map, STL set之数据结构基础
- 2015年大二上-数据结构-图-1-(4)-利用遍历思想求解图问题(2)
- 2015年大二上-数据结构-图-1-(4)-利用遍历思想求解图问题(1)
- 数据结构(寒假小结)——2.线性表