数据结构:顺序表的实现(C语言实现)

来源:互联网 发布:淘宝品牌授权 编辑:程序博客网 时间:2024/03/29 00:16
顺序表的实现
     (1) 初始化顺序表
     (2) 建立顺序表
     (3) 销毁顺序表 //顺序表静态分配内存,在顺序表退出作用域时自动释放该变量所占内存单元,无需销毁
     (4) 判空操作
     (5) 求顺序表的长度
     (6) 遍历操作
     (7) 按值查找
     (8) 按位查找
     (9) 插入操作
     (10) 删除操作
所需要实现的十大功能



#include<stdio.h>#define MaxSize 100typedef int typeDate; //定义线性表的数据类型,假设为int型  struct SeqList{  typeDate date[MaxSize];  int length;};void IniList(SeqList *L) {//初始化顺序表   L -> length = 0;}int SetList(SeqList *L, typeDate a[], int n) {//建立顺序表   if(n > MaxSize)  {    printf("顺序表空间不足,无法建立\n");    return 0;   }  for(int i = 0; i < n; i++)    L -> date[i] = a[i];  L -> length = n;   return 1;} void Empty(SeqList *L) {//判空操作   if (L -> length == 0) printf("顺序表为空\n");  else printf("顺序表不为空\n");}int length(SeqList *L) {//求顺序表长度   return L -> length;} void PrintList(SeqList *L) {//遍历顺序表   for(int i = 0; i < L -> length; i++)    printf("%d ", L -> date[i]);  printf("\n");}int Locate(SeqList *L, typeDate x) {//按值查找   for(int i = 0; i < L -> length; i++)    if(L -> date[i] == x) {      printf("该值位于第%d位\n", i);      return 1;    }  printf("顺序表中没有该值, 查找失败\n");  return 0;}int Get(SeqList *L, typeDate n) {//按位查找   if(n < 0 || n > L -> length) {    printf("查找位置非法,查找失败\n");    return 0;   }  return L -> date[n];}int Insert(SeqList *L, int j, typeDate x) {// 插入操作   if(L -> length >= MaxSize) {    printf("上溢错误,插入失败\n");    return 0;   }  if(j < 0 || j > L -> length) {    printf("位置错误,插入失败\n");    return 0;  }  for(int i = L -> length; i >= j; i--)    L -> date[i] = L -> date[i-1];  L -> date[j] = x;  L -> length++;  return 1;} int Delete(SeqList *L, int j) {  if(L -> length <= 0) {    printf("下溢错误,删除失败\n");    return 0;  }  if(j < 0 || j > L -> length) {    printf("超出顺序表范围, 删除失败\n");    return 0;  }  for(int i = j; i < L -> length; i++)    L -> date[i] = L -> date[i+1];  L -> length--;  return 1;}int main() {  int n;  int Test[5] = {1, 2, 3, 4, 5};  SeqList L;  SetList(&L, Test, 5);  Insert(&L, 0, 6);//在第0位插一个6  Insert(&L, 6, 7);//在第6位插一个7   Insert(&L, 3, 10);  Locate(&L, 6);//查找6这个数的位置   printf("该位置的数字是:%d\n", Get(&L, 3));  PrintList(&L);  for(int i = 0; i < 5; i++) {    printf("请输入你想删除的元素下标: ");    scanf("%d", &n);    printf("\n");    Delete(&L, n);    PrintList(&L);   }} 


参考书籍: <<数据结构-从概念到C实现>>
原创粉丝点击