#include <stdio.h>
#include <stdlib.h>
#define addSize 5typedef int elemType;
typedef struct
{
int size;
elemType *head;
int length;
} table;void createTable(table *t)
{
scanf("%d", &(t -> size));t -> head = (elemType*)malloc(t -> size * sizeof(elemType));
if (t -> head)
{
t -> length = 0;
while((t -> length) < (t -> size))
{
scanf("%d", &(t -> head[t -> length]));
t -> length++;
}}
else
{
printf("分配空间失败");
exit(0);
}
}void showTable(table t)
{
int i = 0;
while(i < t.length)
{
printf("%d ", t.head[i]);
i++;
}
printf("\n");
}void insertData(table *t, int index, elemType data)
{
if (index > t -> length)
{
printf("插入位置不合法,插入失败!");
}
else
{
if (t -> length == t -> size)
{
t -> size += addSize;t -> head = (elemType*)realloc(t -> head, t -> size * sizeof(elemType));
if (t -> head)
{
t -> length++;
insertData(t,index,data);
}
else
{
printf("扩容失败");
exit(0);
}
}
else
{
int i = t -> length - 1;
while(i >= index)
{
if (i > index)
{
t -> head[i] = t -> head[i - 1];
}
else
{
t -> head[i] = data;
}
i--;
}
showTable(*t);
}
}
}void deleteData(table *t,int index)
{
if (index > (t -> length - 1) || index < 0)
{
printf("删除位置有误");
}
else
{
int i = index;
while( i < (t -> length - 1))
{
t -> head[i] = t -> head[i + 1];
i++;
}
t -> length--;
}
showTable(*t);
}void findData(table t,elemType data)
{
int count = 0;
int i = 0;
while(i < t.length)
{
if(data == t.head[i])
{
printf("查找成功:%d的index是%d",data,i);
}
else
{
count++;
if(count == t.length)printf("查找失败!");
}
i++;
}
}void menu(table *t)
{
printf("插入数据输入0\n");
printf("删除数据输入1\n");
printf("查找数据输入2\n");int act;
scanf("%d",&act);switch(act)
{
case 0 :
{
int index;
elemType data;
printf("输入插入位置和插入数据\n");
scanf("%d %d",&index,&data);
insertData(t,index,data);
break;
}case 1 :
{
int index;
printf("输入删除位置\n");
scanf("%d",&index);
deleteData(t,index);
break;
}case 2 :
{
elemType data;
printf("输入查找数据\n");
scanf("%d",&data);
findData(*t,data);
}}
}int main()
{
table t;
createTable(&t);//menu(&t);
free(t.head);
return 0;
}
阅读顺序表
最新推荐文章于 2024-05-21 20:29:42 发布