留这儿,以后翻出来复习复习~
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#define Maxsize 100
using namespace std;
typedef int Elemtype;
typedef struct
{
Elemtype data[Maxsize];
int length;
}Sqlist;
void SqlistInit(Sqlist *L)//初始化
{
L->length=0;
printf("初始化成功\n");
}
void SqlistShow(Sqlist L)//遍历
{
for(int i=1;i<=L.length;i++)
printf("%d ",L.data[i]);
printf("\n");
}
int SqlistInsert(Sqlist *L,int i,Elemtype e)//前插
{
if(i<1||i>L->length+1)
{
printf("无法插入\n");
return 0;
}
if(L->length>=Maxsize)
{
printf("FULL\n");
return 0;
}
for(int j=L->length-1;j>=i;j--)
{
L->data[j+1]=L->data[j];
}
L->data[i]=e;
L->length++;
return 1;
}
void SqlistBuilt(Sqlist *L)//新建
{
int x;
printf("请输入链表中的元素\n");
scanf("%d",&x);
while(x!=0)
{
L->data[++L->length]=x;
scanf("%d",&x);
}
SqlistShow(*L);
}
int SqlistDelete(Sqlist *L,int i,Elemtype *e)//删除元素
{
int j;
if(i<1||i>L->length+1)
{
printf("无法删除\n");
return 0;
}
for(j=i-1;j<L->length;j++)
L->data[j]=L->data[j+1];
*e=L->data[i-1];
L->length--;
return 1;
}
int SqlistCheck(Sqlist L,int s)//查找
{
for(int i=1;i<=L.length;i++)
if(L.data[i]==s)
return 1;
return 0;
}
int SqlistSymmetry(Sqlist L)//判断是否对称
{
int i=1,j=L.length;
while(i<=j)
{
if(L.data[i]!=L.data[j])
return 0;
i++;
j--;
}
return 1;
}
int SqlistEven(Sqlist *L)//把链表中所有奇数排在偶数之前
{
int t;
for(int i=2;i<=L->length;i++)
{
if(L->data[i]%2==0)
{
t=L->data[i];
for(int j=i;j<L->length;j++)
L->data[j]=L->data[j+1];
L->data[L->length]=t;
}
}
printf("结果为:\n");
SqlistShow(*L);
}
void SqlistSort(Sqlist *L)//建立从小到大的有序表
{
int i,j;
for(i=1;i<L->length;i++)
for(j=i+1;j<=L->length;j++)
{
if(L->data[i]>L->data[j])
swap(L->data[i],L->data[j]);
}
printf("遍历结果为:\n");
SqlistShow(*L);
}
int main()
{
Sqlist L;
printf("*******************************\n");
printf("1,初始化链表\n");
printf("2,新建链表\n");
printf("3.遍历新链表\n");
printf("4,在链表中查找新元素\n");
printf("5,判断链表中元素是否对称\n");
printf("6,把链表中所有奇数排在偶数之前\n");
printf("7,建立一个有序表\n");
printf("8.退出链表\n");
printf("*******************************\n");
printf("请选择:\n");
int t,tmp;
scanf("%d",&t);
while(t<=7&&t>=1)
{
switch(t)
{
case 1: SqlistInit(&L); break;
case 2: SqlistBuilt(&L); break;
case 3: SqlistShow(L); break;
case 4: printf("请输入要查找的元素\n");
scanf("%d",&tmp);
if(SqlistCheck(L,tmp))
printf("存在该元素\n");
else
printf("该元素不存在\n"); break;
case 5:if(SqlistSymmetry(L))
printf("该链表对称\n");
else
printf("该链表不对称\n");
break;
case 6: SqlistEven(&L); break;
case 7: SqlistSort(&L); break;
case 8: break;
}
printf("请选择:\n");
scanf("%d",&t);
}
return 0;
}