这个程序是对已定义的数组进行的操作,所以局限性很大,这里用了数据结构的算法,指针,C语言函数的调用,switch的用法 ,自定义数组的长度最大为10,这里用的数组长度为7,注意*数组的长度不能大于最大长度,*这里希望对初学数据结构与算法的码友有帮助。
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#define ListSize 10
typedef int DataType;
typedef struct{
DataType data[ListSize];
int length;
}SeqList;
int LengthList(SeqList *L){
return L->length;
}
DataType GetList(SeqList *L,int i){
return L->data[i-1];
}
int InsertList(SeqList *L,DataType t,int i){
int j;
if(i<1||i>L->length+1){
puts("插入位置有错");
return 0;
}
if(L->length>=ListSize){
puts("表格长度不能插满");
return 0;
}
for(j=L->length-1;j>=i-1;j--)
L->data[j+1]=L->data[j];
L->data[i-1]=t;
L->length++;
return 1;
}
void show(SeqList *L){
for(int j=0;j<LengthList(L);j++)
printf("%4d",L->data[j]);
printf("\n");
}
void menuShow(){//列出开始的菜单,供用户选择
printf("\n\t\t 线性表的操作 \n");
printf("\n\t\t 1.求表长 \t\t 2.取表元");
printf("\n\t\t 3.插入 \t\t 4.删除") ;
printf("\n\t\t 5.按值查找 \t\t 6.退出") ;
}
int delList(SeqList *L,int i){//删除操作
int j;
if(i<1||i>L->length){
puts("删除位置有错");
return 0;
}
if(L->length==0){
puts("空表不能删除");
return 0;
}
for(j=i;j<L->length;j++){
L->data[j-1]=L->data[j];
}
L->length--;
}
int locateList(SeqList *L,DataType t){
int i=1;
while(i<=L->length&&L->data[i-1]!=t)
i++;
if(L->data[i-1]==t)
return i;
else
return -1;
}
void Menuse(SeqList *L,char ch){
int i,x;
switch(ch){
case '1':printf("表长为 %d\n",LengthList(L));break;
case '2':printf("请输入取第几个元素:");
scanf("%d",&i);
getchar();
if(i<1||i>L->length)
puts("输入错");
else
printf("第%d个元素为%d",i,GetList(L,i));
break;
case '3':printf("请输入要插入元素的位置和数值:") ;
scanf("%d%d",&i,&x);
getchar();
printf("原线性表:\n");
show(L);
if(InsertList(L,x,i)){
printf("插入后的线性表:\n");
show(L);
}
else
printf("插入失败 \n");
break;
case '4':printf("请输入要删除的位置 \n");
scanf("%d",&i);
if(delList(L,i))
{
printf("删除后的线性表:\n");
show(L);
}
else
printf("删除失败 \n");
break;
case '5':printf("请输入要查找的值 \n");
scanf("%d",&x);
locateList(L,x);
printf("这是第%d个元素",i);
break;
case '6': printf("欢迎再次使用 \n") ;
break;
}
}
int main() {
SeqList T={{12,23,25,36,17,8,6},7};
char ch;
while(1){
system("cls");
menuShow();
printf("\n 请输入你的选择");
ch=getchar();getchar();
Menuse(&T,ch);
printf("任意键继续");
getch();
}
return 0;
}