📄 seqlist.cpp
字号:
#include <stdio.h>
#define MAXSIZE 50
struct SeqList
{
int data[MAXSIZE];
int last;
};
void SeqListSetnull(struct SeqList *p)/*装入表*/
{
p->last=0;
}
int SeqListLength(struct SeqList *p)/*表长度*/
{
return p->last;
}
void SeqListGet(struct SeqList *p,int i)//取得一个元素
{
if (i<1 && i>p->last)
{
printf("错误");
}
else
printf("该序号对应的元素为:%d\n",p->data[i-1]);
}
void SeqListLocate(struct SeqList *p,int x)//查找值为x的元素
{
int i=0;
while (i<p->last && p->data[i]!=x)
i++;
if (i==p->last)
printf("没有这元素\n");
else
printf("该元素第一次出现的位置:%d\n",i+1);
}
void SeqListInsert(struct SeqList *p,int i,int x)//在i的位置插入元素x
{
int j;
if (i<1 && i>p->last+1)
{
printf("位置不正确不能行插入\n");
}
else
{
for (j=p->last;j>=i;j--)
{
p->data[j]=p->data[j-1];
}
p->last++;
p->data[i-1]=x;
}
printf("线性表为:");
for (j=0;j<p->last;j++)
{
printf("%d->",p->data[j]);
}
}
void SeqListDelete(struct SeqList *p, int i)//在i位置删除
{
int j;
if (i<1 || i>p->last)
{
printf("错误");
}
else
{
for (j=i;j<=p->last;j++)
p->data[j]=p->data[j+1];
p->last--;
}
printf("线性表为:");
for (i=0;i<p->last;i++)
printf("%d->",p->data[i]);
}
void SeqListSort(struct SeqList *p)//从小到大排
{
int i,j;
int temp;
for (i=0;i<p->last-1;i++)
{
for (j=i+1;j<p->last;j++)
{
if (p->data[i]>p->data[j])
{
temp=p->data[i];
p->data[i]=p->data[j];
p->data[j]=temp;
}
}
}
printf("顺序表排序后:");
for (i=0;i<p->last;i++)
{
printf("%d->",p->data[i]);
}
}
void SeqListDisplay(struct SeqList *p)
{
int i;
for (i=0;i<p->last;i++)
{
printf("%d->",p->data[i]);
}
}
void SeqListMerge(struct SeqList *p1,struct SeqList *p2)//两非递减有序顺序表合并成*p3
{
struct SeqList l,*p3;
int i,j,k;
i=0;
j=0;
k=0;
p3=&l;
while (i<p1->last && j<p2->last)//p1 p2非空
{
if (p1->data[i]<=p2->data[j])
{
p3->data[k++]=p1->data[i++];
}
else
p3->data[k++]=p2->data[j++];
}
while (i<p1->last)//p2已空,将p1剩余部分复制到新表
{
p3->data[k++]=p1->data[i++];
}
while(j<p2->last)//p1已空,将p2剩余部分复制到新表
{
p3->data[k++]=p2->data[j++];
}
printf("顺序表合并后:");
for (i=0;i<k;i++)
{
printf("%d->",p3->data[i]);
}
}
int main()
{
int i,j;
int flag=1;
int select;
char ch;
struct SeqList *p;
struct SeqList *p2;
struct SeqList l;
struct SeqList l2;
SeqListSetnull(&l);
printf("请输入五个整数:");
p=&l;
p->last=0;
for (i=0;i<5;i++)
{
scanf("%d",&l.data[i]);
p->last++;
}
SeqListSetnull(&l2);
printf("请再输入五个整数:");
p2=&l2;
p2->last=0;
for (i=0;i<5;i++)
{
scanf("%d",&l2.data[i]);
p2->last++;
}
while (flag)
{
printf("\n");
printf("1:置空表! 2:求长度! \n");
printf("3:读取元素! 4:定位查找! \n");
printf("5:插入! 6:删除! \n");
printf("7:排序! 8:显示! \n");
printf("9:合并\n");
printf("请选择(1----8) \n");
scanf("%d",&select);
switch(select)
{
case 1: SeqListSetnull(p);break;
case 2: printf("顺序表长度为:%d",SeqListLength(p));
break;
case 3: printf("请输入序号:");
scanf("%d",&i);
SeqListGet(p,i);break;
case 4:printf("请输入查找的元素:");
scanf("%d",&i);
SeqListLocate(p,i);
case 5:printf("输入插入的位置及元素:");
scanf("%d%d",&i,&j);
SeqListInsert(p,i,j);
break;
case 6: printf("输入所要删除数据的位置:");
scanf("%d",&i);
SeqListDelete(p,i);
break;
case 7:SeqListSort(p);SeqListSort(p2);
break;
case 8:SeqListDisplay(p);
break;
case 9:SeqListMerge(p,p2);
break;
default: printf("error");
}
printf("继续操作(Y|N)");
getchar();
ch=getchar();
if ((ch=='n')||(ch=='N'))
flag=0;
else
flag=1;
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -