1 /*
2 Name: 线性表的操作(C语言)
3 Copyright: 高勇
4 Author: gaoyong
5 Date: 30/03/14 20:21
6 Description: 线性表的基本操作。
7 */
8
9 #include<stdio.h>
10 #define Maxsize 100
11 #define ERROR 0
12 typedef int DataType;
13 typedef struct{
14 DataType data[Maxsize];
15 int length;
16 }SqlList;
17
18 void create_list(SqlList *list,int n)
19 {
20 if(n<1)
21 {
22 printf("不可创建空表!\n");
23 }
24 for(int i=1;i<=n;i++)
25 {
26 scanf("%d",list->data+i);
27 }
28 list->length=n;
29 }
30
31 int length_list(SqlList *list)
32 {
33 return list->length;
34 }
35
36 bool empty_list(SqlList *list)
37 {
38 if(list->length==0)
39 {
40 return true;
41 }else
42 {
43 return false;
44 }
45 }
46
47 void clear_list(SqlList *list)
48 {
49 list->length=0;
50 }
51
52 DataType get_list(SqlList *list,int n)
53 {
54 return list->data[n];
55 }
56
57 int locate_list(SqlList *list,DataType x)
58 {
59 for(int i=1;i<=list->length;i++)
60 {
61 if(list->data[i]==x)
62 {
63 return i;
64 }
65 }
66 return ERROR;
67 }
68
69 void insert_list(SqlList *list,DataType data_to_insert,int index)
70 {
71 if(index<=0)
72 {
73 printf("插入位置非法,不可插入!\n");
74
75 }
76 else if(index>list->length+1)
77 {
78 printf("插入位置越过线性表边界!\n");
79
80 }else
81 {
82 for(int i=list->length;i>=index;i--)
83 {
84 list->data[i+1]=list->data[i];
85 }
86 list->data[index]=data_to_insert;
87 printf("线性表插入成功!\n");
88 }
89 }
90 void delete_list(SqlList *list,int n)
91 {
92 if(n<=0)
93 {
94 printf("删除位置非法!\n");
95 }else if(n>list->length)
96 {
97 printf("删除位置超越线性表边界!\n");
98 }else
99 {
100 for(int i=n;n<list->length;i++)
101 {
102 list->data[i]=list->data[i+1];
103 }
104 list->length--;
105 printf("删除成功!\n");
106 }
107 }
108 void print_list(SqlList *list)
109 {
110 if(empty_list(list))
111 {
112 printf("线性表的长度为0 \n");
113 }else
114 {
115 for(int i =1;i<=list->length;i++)
116 {
117 printf("线性表的第%d个元素是%d \n",i,list->data[i]);
118 }
119 }
120
121 }
122 int main()
123 {
124 int length=0;
125 SqlList *list;
126 create_list(list,3);
127 /*
128 length=length_list(list);
129 bool is_empty=empty_list(list);
130 if(is_empty)
131 {
132 printf("该线性表为空!");
133 }else
134 {
135 printf("该线性表的长度为%d\n",length_list(list));
136 }
137 DataType x=5;
138 int location=locate_list(list,x);
139 if(location==ERROR)
140 {
141 printf("未找到该元素/n");
142 }else
143 {
144 printf("该元素%d在线性表中存在,位置为%d/n",x,location);
145 }
146 */
147 insert_list(list,25,2);
148 print_list(list);
149 return 0;
150 }