码迷,mamicode.com
首页 > 其他好文 > 详细

线性表

时间:2019-01-20 21:22:17      阅读:175      评论:0      收藏:0      [点我收藏+]

标签:else   element   style   code   错误信息   printf   max   struct   指定   

 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\n",Find(p,9));
83     printf("%d\n",Find(p,8));
84     return 0;
85 }

 

线性表

标签:else   element   style   code   错误信息   printf   max   struct   指定   

原文地址:https://www.cnblogs.com/GoldenEllipsis/p/10296168.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!