⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 3原.c

📁 线形表的相关使用程序
💻 C
字号:
#include <stdio.h>
#define maxsize 10

typedef struct sqlist
{
  int data[maxsize];
  int last;
} SqlistTp;

int main (void)
{
  SqlistTp L;
  int input = 0;
  int output = 0;
  int length = 0;
  int count = 1;
  Initsqlist(&L);
  printf("请输入一些数字:");
  scanf("%d", &input);
  while (input != 0)
    {
      insert_sqlist (&L, input, count);
      count++;
      scanf("%d", &input);
    }
  print_sqlist(&L);
  length_sqlist(&L, &length);
  printf("线性表的顺序表长为%d\n", length);
  printf("请输入要插入的数据和相应的位置:");
  scanf("%d %d", &input, &count);
  insert_sqlist(&L, input, count);
  print_sqlist(&L);
  length_sqlist(&L, &length);
  printf("线性表的顺序表长为%d\n", length);
  printf("请输入要读出的数据的位置:");
  scanf("%d", &count);
  get_sqlist(&L, count, &output);
  printf("第%d个位置的数据是%d\n", count, output);
  printf("请输入要查找(按值查找)的数据:");
  scanf("%d", &input);
  locate_sqlist(&L, input, &output);
  printf("您要查找的数据%d在第%d个位置.\n", input, output);
  printf("请输入要删除的位置:");
  scanf("%d", &count);
  delete_sqlist(&L, count);
  print_sqlist(&L);
}

int Initsqlist (SqlistTp *L)
{
  L -> last = 0;
}

int insert_sqlist (SqlistTp *L, int x, int i)
{
  int j;
  if (L -> last == maxsize)
    {
      printf("\n表满!\n");
      return 0;
    }
  if ((i < 1) || (i > L -> last + 1))
    {
      printf("\n非法位置!\n");
      return 0;
    }
  for (j = L -> last; j >= i; j--)
    L -> data[j] = L -> data[j - 1];
  L -> data[i - 1] = x;
  L -> last = L -> last + 1;
}

int print_sqlist (SqlistTp *L)
{
  int i;
  printf("当前线性表的排列为:\n");
  for (i = 1; i <= L -> last; i++)
    printf("(%d):%d ", i,  L -> data[i - 1]);
  printf("\n");
}
int length_sqlist (SqlistTp *L, int *length)
{
  *length = L -> last;
} 


int get_sqlist (SqlistTp *L, int i, int *out)
{
  if ((i < 0) || (i > L -> last))
    {
      printf("\n非法位置!\n");
      return 0;
    }
  else
    *out = L -> data[i - 1];
}

int locate_sqlist (SqlistTp *L, int x, int *output)
{
  int i = 1;
  while ((i <= L -> last) && (L -> data[i - 1] != x))
    i++;
  if (i <= L -> last)
    *output = i;
  else
    printf("\n查无此数!\n");
}


int delete_sqlist (SqlistTp *L, int i)
{
  int j;
  if ((i < 1) || (i > L -> last))
    {
      printf("\n非法位置!\n");
      return 0;
    }
  for (j = i + 1; j <= L -> last; j++)
    L -> data[j - 2] = L -> data[j - 1];
  L -> last = L -> last -1;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -