我是靠谱客的博主 欣慰大象,这篇文章主要介绍c语言实现线性表的初始化,创建,查找,删除,现在分享给大家,希望可以做个参考。

1.第一步定义线性表结构

复制代码
1
2
3
4
typedef struct {     ElementType data[MaxSize];     int length; }Lineartable;

2.第二步线性表初始化

复制代码
1
2
3
4
5
6
7
//初始化线性表 Lineartable* INITAL(){ Lineartable *lineartable; lineartable = (Lineartable *)malloc(sizeof(Lineartable)); lineartable->length=0; return lineartable; };

3 按照顺序插入生成线性表

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void INSERT(ElementType x,int i,Lineartable *lineartable){ if(i<0||i>lineartable->length){ // printf("插入位置不合理"); return ; }else{ for(int j=lineartable->length;j>=i-1;j--){ lineartable->data[j+1]=lineartable->data[j]; } lineartable->data[i-1]=x; lineartable->length++; return ; } }

4查找元素所在顺序表中位置

复制代码
1
2
3
4
5
6
7
8
9
10
int LOCATE(Lineartable *lineartable,int item){ int n= lineartable->length; for(int i=0;i<n;i++){ if (lineartable->data[i]==item){ return i+1;//查找成功,返回所在表中位置 } } return -1;//查找失败,返回-1 };

5插入元素,第i个位置上插入item

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
int INSERTITEM(Lineartable *lineartable,int i,int item){ if(lineartable->length ==MaxSize|| i<1||i> (lineartable->length+1)){ //测试空间是否满了 return -1;//插入失败 }else{ for(int j= (lineartable->length -1);j>=i-1;j--){ lineartable->data[j+1]=lineartable->data[j];//元素依次后移一个位置 } lineartable->data[i-1]=item;//将item插入表的第i个位置 lineartable->length ++;//线性表长度加1 return 1;//插入成功 } };

6删除元素,删除第i个位置的元素

复制代码
1
2
3
4
5
6
7
8
9
10
int DELETE(Lineartable *lineartable,int i){ if(i<1||i>(lineartable->length)){//测试表空和位置合适与否 return -1;//删除失败 } for(int j=i;j<(lineartable->length);j++){ lineartable->data[j-1]=lineartable->data[j];//元素依次前移一个位置 } (lineartable->length)--;//线性表长度减1 return 1;//删除成功 }

7插入元素到有序线性表中

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
void INSERTSORT(Lineartable *lineartable,ElementType item){ int i,j; int n=lineartable->length; if(item >= lineartable->data[n-1]){ //特殊情况,插入表尾部 lineartable->data[n]=item; }else{ i=0; while(item >= lineartable->data[i]){ //寻找插入位置 i++; } for(j=n-1;j>=i;j--){//将item插入表中 lineartable->data[j+1]=lineartable->data[j]; } lineartable->data[i]=item; lineartable->length ++; } }

8显示线性表中的元素

复制代码
1
2
3
4
5
void print(Lineartable *lineartable){ for(int i=0;i< (lineartable->length);i++){ printf("%dt",lineartable->data[i]); } }

9主函数

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
Lineartable* INITAL(); void INSERT(ElementType x,int i,Lineartable *lineartable); int LOCATE(Lineartable *lineartable,int item); int INSERTITEM(Lineartable *lineartable,int i,int item); void print(Lineartable *lineartable); int DELETE(Lineartable *lineartable,int i); void INSERTSORT(Lineartable *lineartable,ElementType item); int main() { ElementType A[]={1,2,3}; //定义一个线性表 Lineartable *lineartable; //初始化一个线性表 lineartable = INITAL(); //插入法插入元素到线性表中 for(int i=0;i<10;i++){ INSERT(i,i,lineartable); } //查找元素所在线性表位置 int result = LOCATE(lineartable,2); printf("元素2所在位置为:%dn",result); //线性表中指定位置插入元素 printf("在第3个位置上插入元素12后元素显示如下n:"); INSERTITEM(lineartable,3,12); print(lineartable); //删除指定位置线性表元素 printf("删除第3个位置元素后显示如下n"); DELETE(lineartable,3); print(lineartable); //将新数据插入到有序的线性表中 printf("将新数据7插入到有序的顺序表中,并输出元素n"); INSERTSORT(lineartable,7); print(lineartable); };

 

最后

以上就是欣慰大象最近收集整理的关于c语言实现线性表的初始化,创建,查找,删除的全部内容,更多相关c语言实现线性表内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(125)

评论列表共有 0 条评论

立即
投稿
返回
顶部