线性表

Posted goldenellipsis

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了线性表相关的知识,希望对你有一定的参考价值。

 1 #include<stdio.h>
 2 #include <stdlib.h>
 3 #define MAXSIZE 15
 4 #define false 0
 5 #define true 1
 6 
 7 typedef int Position,ElementType,bool;
 8 typedef struct LNode *List;
 9 struct LNode {
10     ElementType Data[MAXSIZE];
11     Position Last;
12 };
13 
14 /* 初始化 */
15 List MakeEmpty()
16 {
17     List L;
18     
19     L = (List)malloc(sizeof(struct LNode));
20     L->Last = -1;
21     
22     return L;
23 }
24 
25 /* 查找 */
26 #define ERROR -1
27 
28 Position Find( List L, ElementType X )
29 {
30     Position i = 0;
31     
32     while( i <= L->Last && L->Data[i]!= X )
33         i++;
34     if ( i > L->Last )  return ERROR; /* 如果没找到,返回错误信息 */
35     else  return i;  /* 找到后返回的是存储位置 */
36 }
37 
38 /* 插入 */
39 /*注意:在插入位置参数P上与课程视频有所不同,课程视频中i是序列位序(从1开始),
40 这里P是存储下标位置(从0开始),两者差1*/
41 bool Insert( List L, ElementType X, Position P ) 
42 { /* 在L的指定位置P前插入一个新元素X */
43     Position i;
44     
45     if ( L->Last == MAXSIZE-1) {
46         /* 表空间已满,不能插入 */
47         printf("表满"); 
48         return false; 
49     }  
50     if ( P<0 || P>L->Last+1 ) { /* 检查插入位置的合法性 */
51         printf("位置不合法");
52         return false; 
53     } 
54     for( i=L->Last; i>=P; i-- )
55         L->Data[i+1] = L->Data[i]; /* 将位置P及以后的元素顺序向后移动 */
56     L->Data[P] = X;  /* 新元素插入 */
57     L->Last++;       /* Last仍指向最后元素 */
58     return true; 
59 } 
60 
61 /* 删除 */
62 /*注意:在删除位置参数P上与课程视频有所不同,课程视频中i是序列位序(从1开始),
63 这里P是存储下标位置(从0开始),两者差1*/
64 bool Delete( List L, Position P )
65 { /* 从L中删除指定位置P的元素 */
66     Position i;
67     
68     if( P<0 || P>L->Last ) { /* 检查空表及删除位置的合法性 */
69         printf("位置%d不存在元素", P ); 
70         return false; 
71     }
72     for( i=P+1; i<=L->Last; i++ )
73         L->Data[i-1] = L->Data[i]; /* 将位置P+1及以后的元素顺序向前移动 */
74     L->Last--; /* Last仍指向最后元素 */
75     return true;   
76 }
77 int main()
78 {
79     List p = MakeEmpty();
80     Insert(p,9,0);
81     Insert(p,8,1);
82     printf("%d
",Find(p,9));
83     printf("%d
",Find(p,8));
84     return 0;
85 }

 

以上是关于线性表的主要内容,如果未能解决你的问题,请参考以下文章

如何在android中的地图片段内中心线性布局?

垂直线性布局中的多个片段

线性表的插入和删除操作代码(C语言)

在android中的类内的对话框片段的线性布局中添加textview

数据结构学习笔记二线性表---顺序表篇(画图详解+代码实现)

数据结构学习笔记二线性表---顺序表篇(画图详解+代码实现)