数据结构-线性表顺序存储(c++)

2021-07-04 23:07

阅读:419

标签:insert   namespace   public   ext   赋值   empty   pre   遍历   顺序   

数据结构-线性表顺序存储(c++) 2018-09-06

List.h  //头文件

 

 1 #define OK 1
 2 #define ERRO0R 0
 3 #define TRUE 1
 4 #define FALSE 0
 5 #define MAXSIZE 20  //存储空间初始分配量
 6 
 7 typedef int Status;  //Status 函数结果状态码
 8 typedef int ElemType;  //ElemType 据具体情况而定
 9 
10 class SqList
11 {
12 public:
13     SqList();  //构造函数
14     ~SqList();  //析构函数
15     ElemType m_data[MAXSIZE];  //线性表数据
16     int m_nLength;  //线性表长度
17     Status Visit(ElemType c);  //输出c
18     Status InitList();  //初始化线性表长度
19     Status ListEmpty();  //判断线性表是否为空
20     Status ClearList();  //设置线性表长度为0
21     int ListLength();  //线性表长度
22     Status GetElem(int i,ElemType *e);  //取i位子元素到e
23     int LocateElem(ElemType e);  //元素e的位子
24     Status ListInsert(int i,ElemType e);  //在i处插入e
25     Status ListDelete(int i,ElemType *e);  //删除i处元素,元素赋值到e
26     Status ListTraverse();  //遍历输出链表
27     void UnionL(SqList Lb);  //链表并集
28 }

 

List.h  //源文件

  1 #include   2 #include "List.h"
  3 
  4 using namespace std;
  5 SqList::SqList()
  6 {
  7     m_nLength=0;
  8 }
  9 
 10 SqList::~SqList()
 11 {
 12 
 13 }
 14 
 15 Status SqList::Visit(ElemType c)
 16 {
 17     coutendl;
 18     return OK;
 19 }
 20 
 21 Status SqList::InitList()
 22 {
 23     m_nLength=0;
 24     return OK;
 25 }
 26 
 27 Status SqList::ListEmpty()
 28 {
 29     if(m_nLength==0)
 30         return TRUE;
 31     else
 32         return FALSE;
 33 }
 34 
 35 Status SqList::ClearList()
 36 {
 37     m_nLength=0;
 38     return OK;
 39 }
 40 
 41 Status SqList::ListLength()
 42 {
 43     return m_nLength;
 44 }
 45 
 46 Status SqList::GetElem(int i,ElemType *e)
 47 {
 48     if(m_nLength==0||i1||i>m_nLength)
 49         return FALSE;
 50     *e=m_data[i-1];
 51     return OK;
 52 }
 53 
 54 Status SqList::LocateElem(ElemType e)
 55 {
 56     int i;
 57     if(m_nLength==0)
 58         return 0;
 59     for(i=0;i)
 60     {
 61         if(m_data[i]==e)
 62             break;
 63     }
 64     if(i>=m_nLength)
 65         return 0;
 66     return i+1;
 67 }
 68 
 69 Status SqList::ListInsert(int i,ElemType e)
 70 {
 71     int k;
 72     if(m_nLength==MAXSIZE)
 73         return FALSE;
 74     if(i1||i>m_nLength+1)
 75         return FALSE;
 76     if(im_nLength)
 77     {
 78         for(k=m_nLength-1;k>=i-1;k--)
 79             m_data[k+1]=m_data[k];
 80     }
 81     m_data[i-1]=e;
 82     m_nLength++;
 83     return OK;
 84 }
 85 
 86 Status SqList::ListDelete(int i,ElemType *e)
 87 {
 88     int k;
 89     if(m_nLength==0)
 90         return FALSE;
 91     if(i1||i>m_nLength)
 92         return FALSE;
 93     *e=m_data[i-1];
 94     if(im_nLength)
 95     {
 96         for(k=i;i)
 97             m_data[k-1]=m_data[k];
 98     }
 99     m_nLength--;
100     return OK;
101 }
102 
103 Status SqList::ListTraverse()
104 {
105     int i;
106     for(i=0;i)
107         Visit(m_data[i]);
108     cout"\n"endl;
109     return OK;
110 }
111 
112 void SqList::UnionL(SqList Lb)
113 {
114     int La_len,Lb_len,i;
115     ElemType e;
116     La_len=ListLength();
117     Lb_len=Lb.ListLength();
118     for(i=1;i)
119     {
120         Lb.GetElem(i,&e);
121         if(!LocateElem(e))
122             ListInsert(++La_len,e);
123     }
124 }


实例:

 

 1 #include "List.h"
 2 #include  3 
 4 using namespace std;
 5 
 6 void main()
 7 {
 8     SqList L;
 9     ElemType e;
10     Status i;
11     int j,k;
12     i=L.InitList();
13     cout"初始化L后:L.length="endl;
14     for(j=1;j5;j++)
15         i=L.ListInsert(1,j);
16     cout"在L的表头依次插入 1-5后:L.m_data="endl;
17     L.ListTraverse();
18     coutendl;
19     i=L.ListEmpty();
20     cout"L是否空 i=""(1:是 0:否)"endl;
21     i=L.ClearList();
22     cout"清空L后L.m_length="endl;
23     L.ListEmpty();
24     for(j=1;j5;j++)
25         i=L.ListInsert(j,j);
26     cout"在L的表尾依次插入 1-10后:L.m_data="endl;
27     L.ListTraverse();
28     L.GetElem(5,&e);
29     SqList Lb;
30     for(j=0;j10;j++)
31         i=Lb.ListInsert(1,j);
32     cout"在L的表头依次插入 1-15后:L.m_data="endl;
33     Lb.ListTraverse();
34     L.UnionL(Lb);
35     L.ListTraverse();
36     system("pause");
37 }

 

 

 

数据结构-线性表顺序存储(c++)

标签:insert   namespace   public   ext   赋值   empty   pre   遍历   顺序   

原文地址:https://www.cnblogs.com/XZDSF/p/9600031.html


评论


亲,登录后才可以留言!