赞
踩
c语言 顺序表的基本操作(创建、初始化、赋值、插入、删除、查询、替换、输出)
1、创建、申请空间
2、初始化、顺序表数据结构大小、长度
3、赋值、顺序表数据结构赋值
4、插入、在指定位置插入数据,后续数据循环后移,长度增加,空间大小增加或者不变
5、删除、删除指定位置的数据,后续数据循环前移,长度减小、空间大小不变
6、查询、查看指定数据是否在顺序表结构中
7、替换、将顺序表结构中指定数值替换为另外的数值
8、输出、输出顺序表结构中存储的数据(根据长度大小输出)
代码如下:
- #include <stdio.h>
- #include <stdlib.h>
- #include <Windows.h>
- #define Size 5
- //显示日期、时间、文件信息
- void xinxi()
- {
-
- printf("Date : %s\n", __DATE__);
- printf("Time : %s\n", __TIME__);
- printf("File : %s\n", __FILE__);
- printf("Line : %d\n", __LINE__);
- printf("\n***以下是程序部分***\n\n");
-
- }
- //定义顺序表结构
- typedef struct Table
- {
- int *head;//类似于数组指针
- int length;//数据长度
- int size;//机构大小
- }table;
- //初始化顺序表结构
- table initcreact()
- {
- table t;
- if ((t.head = (int *)malloc(Size*sizeof(int))) == NULL)
- {
- printf("申请存储空间失败!");
- exit(1);
- }
- t.length = 0;//初始化长度为 0
- t.size = Size;//结构大小
- return t;
- }
- //结构赋值
- table fuzhi(table t)
- {
- int i;
- for (i = 0; i < t.size; i++)
- {
- t.head[i] = i + 1;
- t.length++;//长度随赋值情况增加
- }
- return t;
- }
- //输出结构存储情况
- table prt(table t)
- {
- printf("存储的数据如下:\n");
- for (int i = 0; i < t.length; i++)
- printf("%d ", t.head[i]);
- printf("\n");
- return t;
- }
- //插入数据
- table insert(table t,int elme,int add)
- {
- if (t.length == t.size)//如果数据结构已满,增加存储空间
- t.head= (int *)realloc(t.head, (t.size + 1) * sizeof(int));
- if (t.head == NULL)
- {
- printf("申请存储空间失败!\n");
- exit(1);
- }
- else t.size++;//空间大小增加
- int i = t.size;
- for (; i >= elme-1; i--)//数据循环后移
- t.head[i] = t.head[i - 1];
- t.head[elme-1] = add;//指定位置插入数据,赋值
- t.length++;//长度增加
- return t;
- }
- //删除指定数据
- table deleter(table t, int elme)
- {
- int i = elme-1;
- for (; i <= t.size; i++)
- t.head[i] = t.head[i +1];
- t.head[i] = 0;
- t.length--;
- return t;
- }
- //查询指定数据,返回在数据结构中的位置
- int select(table t, int elme)
- {
- int i;
- for (i = 0; i <= t.length; i++)
- {
- if (t.head[i] == elme)
- return i+1;
- }
- return -1;
- }
- //替换指定数据
- table tihuan(table t, int elme, int add)
- {
- int i=select(t,elme);
-
- t.head[i-1] = add;
- return t;
-
- }
- //主函数
- int main()
- {
- xinxi();
- table t = initcreact();
- t = fuzhi(t);
- t = prt(t);
- int elme;
- printf("请输入插入的位置:");
- scanf("%d", &elme);
- int add;
- printf("请输入插入数据:");
- scanf("%d", &add);
- if (elme > t.size+1 || elme < 0)
- {
- printf("输入的位置错误\n");
- exit(0);
- }
- t = insert(t, elme,add);
- t = prt(t);
- printf("请输入删除的位置:");
- scanf("%d", &elme);
- if (elme > t.size || elme < 0)
- {
- printf("输入的位置错误\n");
- exit(0);
- }
- t = deleter(t, elme);
- t = prt(t);
- printf("查找 5 的位置\n");
- elme = select(t, 5);
- printf("5 的位置是 %d\n", elme);
-
- t = prt(t);
- printf("用 55 替换 5\n");
- tihuan(t, 5, 55);
- t = prt(t);
-
- system("pause");
- return 0;
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。