数据结构 线性表 顺序表 源代码C
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#define MAXSIZE 100 //MAXSIZE 为线性表可能的最大长度
#include
#include
typedef int ElemType;
typedef struct
{
ElemType data[MAXSIZE];
int length; // length为线性表的长度
} SqList;
SqList l; //线性表定义
void InitList(SqList &L) //初始化操作,将线性表L置空
{
L.length = 0;//g给顺序表长度初始化为0
}
void CreatSqlist(SqList &L,int n) //建立一个顺序存储的线性表
{
printf("请输入节点");
int i;
for(i=0;i scanf("%d",&L.data[i]);//读取元素 L.length=n;//表的长度就是元素的个数 fflush(stdin); //清除一个流 } void Output(SqList &L) //输出顺序表L { int i; for(i=0;i printf("%5d",L.data[i]); //每个数据占5列 printf("\n"); } int DELETE(SqList &L,int i)//删除一个元素 { int j; if(i<1||i>L.length)//删除位置错误 {printf("error");return 0;} else { for(j=i;j L.data[j-1]=L.data[j];//依次把后一个元素往前移动一个位置L.length--;//删除之后长度减1 } return 1; } int INSERT(SqList &L,int x,int i)//指定位置插入元素 { int j; if(L.length>=MAXSIZE-1) {printf("over flow");return 1;}//上溢 else if((i<1)||(i>L.length+1)) {printf("error");return 1;} else {for(j=L.length;j>=i-1;j--) L.data[j+1]=L.data[j];//元素位置依次后移一位 L.data[i-1]=x;//在第i个节点上插入x L.length=L.length+1;//插入之后长度加1 } return 0; } int GET(SqList &L,int i)//从表中获得一个元素 { int m; if((i<0)||(i>L.length)){printf("overflow");return 1;} else if((i>=1)&&(i<=L.length)) { m=L.data[i-1]; }printf("%d ",m); return 0; } int chazhao(SqList &L,int x)//从表中查找元素 { int i,k; printf("\n请输入你要查找的元素x=?"); scanf("%d",&x); for(i=0;i<=(L.length+1);i++)//从第一个元素开始查找,与X比较。 { if(x==L.data[i]) {printf("要查找的元素%d 位于%d 上\n\n",x,i+1); k=0; break; } } if(k!=0) printf("%d 不在表中",x); return 0; } int PUEGE(SqList &L)// 删除线性表中重复出现的多余节点{ int i=1,j,x,y; while(i {x=L.data[i]; j=i+1; /*for(j=i+1;j while(j { y=L.data[j]; if(x==y)DELETE(l,j); else j++; } i++; } return 0; } int main() {int n,i,k,x; InitList(l); printf("请输入线性表的长度"); scanf("%d",&n); CreatSqlist(l,n); Output(l); printf("请输入你要删除元素的位置=?"); scanf("%d",&k); DELETE(l,k);Output(l); printf("请输入想要插入的数和位置x,i=?"); scanf("%d,%d",&x,&i); INSERT(l,x,i);Output(l); printf("请输入你要取的数在的节点位置"); scanf("%d",&i); GET(l,i); chazhao(l,x); PUEGE(l); return 0; }