赞
踩
#include <stdio.h> #include <stdlib.h> #define MAXSIZE 100 //顺序表的最大长度; int k=0;//全局变量,用于循环; typedef int elemtype;//元素类型; typedef struct{ elemtype data[MAXSIZE];//用数组存储线性表的元素; int length;//顺序表的长度,元素个数; }SqList; void InitList(SqList *L)//初始化顺序表; { L->length=0;//初始化顺序表就是将顺序表初始化为空,长度为零; } int ListLength(SqList *L)//求顺序表长度,也就是顺序表中元素个数; { if(L==NULL) return 0; else return L->length; } int GetElem(SqList L,int i,elemtype *e)//查找第i个元素,并用e返回; { if(L.length == 0 || i < 1 || i > L.length)//判断序号是否合法 { printf("输入不合法,查询不到该元素位置!\n"); return 0; } printf("查询位置为%d的元素\n",i); *e=L.data[i-1];//数据元素的序号从1开始,数组从0开始,所以第i个元素对应的数组下标为i-1; return 0; } int LocateElem(SqList L,elemtype e)//根据内容查找元素e在表中的位置; { for(k=0;k<L.length;k++) { if(L.data[k]==e) { printf("已查到%d,%d的位置为:",e,e); return k+1; } } return 0; } int ListInsert(SqList *L,int i,elemtype e)//插入元素 { if(L->length==MAXSIZE) { printf("顺序表已满,不能再继续插入元素!\n"); return 0; } if(i<1||i>L->length+1) { printf("输入有误,请重新输入!\n"); return 0; } else { for(k=L->length;k>=i-1;k--)//将每个元素向后移 L->data[k+1]=L->data[k]; L->data[i-1]=e;//插入新元素 L->length++;//长度++; return 1; } } int ListDelete(SqList *L,int i,elemtype *e)//删除第i个元素e,之后将其备份给变量e返回。 { if(L->length==0) return 0; if(i<1||i>L->length) { printf("输入有无,请重新输入!\n"); return 0; } *e=L->data[i-1]; for(k=i;k<L->length;k++) L->data[k-1]=L->data[k]; L->length--; return 0; } int EmptyList(SqList L)//判断表是否为空 { if(L.length==0) printf("顺序表为空\n"); else printf("顺序表不为空\n"); } int ShowList(SqList L)//打印顺序表; { if(L.length==0) { printf("顺序表为空!\n"); return 0; } for(k=0;k<L.length;k++) printf("第%d个元素为%d\n",k+1,L.data[k]); return 1; } int main() { elemtype e; SqList list1; InitList(&list1); list1.data[0] = 1; list1.data[1] = 2; list1.data[2] = 3; list1.data[3] = 13; list1.data[4] = 23; list1.data[5] = 54; list1.length = 6; printf("%d\n", LocateElem(list1, 23)); ShowList(list1); printf("表长为:%d\n",ListLength(&list1)); printf("-------------------"); ListInsert(&list1,7,43); printf("\n"); printf("插入的元素为43\n"); printf("插入元素后的顺序表为:\n"); ShowList(list1); printf("表长为:%d\n",ListLength(&list1)); printf("-------------------\n"); ListDelete(&list1,4,&e); printf("要删除的元素为:%d\n",e); printf("删除元素后的顺序表为:\n"); ShowList(list1); printf("表长为%d\n",ListLength(&list1)); printf("-------------------\n"); GetElem(list1,4,&e); printf("查询位置的元素为%d\n",e); ShowList(list1); EmptyList(list1); return 0; }
参考:
《数据结构》学习指导与实验指导书(第二版
【数据结构】顺序表的c语言实现------找之余
传送门
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。