1.有序顺序表的插入

#include <cstdlib>
#include <iostream>

using namespace std;

//定义顺序表的大小
#define MAX 100 

//定义顺序表接点
typedef struct  Node{
        int data[MAX];
        int length;
        }Node;
        
//查找插入位置
int getLocation(Node node,int x){
    int i;
    for(i=1;i<=node.length;i++){
                              
               if(node.data[i]>x)  return i;               
          }
     return i;
    } 

//插入新元素 
void insert(Node &node,int x){
     int location=getLocation(node,x);
     int i;
     for(i=node.length;i>=location;i--){
          node.data[i+1]=node.data[i];
           }
     node.data[location]=x;
     node.length++;
     } 

int main(int argc, char *argv[])
{
    //构造一个顺序表接点
    Node node;
    node.length=0;
    int i;
    for(i=1;i<=10;i++){
                      node.data[i]=i*i;
                      node.length++;
          }
    //打印没有插入前顺序表的数据
      for(i=1;i<=node.length;i++){
                    printf("--%d", node.data[i]);                  
          }
     //换行 
     putchar('\n');
     
     insert(node,5);
    //打印没有插入后顺序表的数据
      for(i=1;i<=node.length;i++){
                    printf("--%d", node.data[i]);                  
          }
    system("PAUSE");
    return EXIT_SUCCESS;
}


 

以下C语言实现建立顺序表插入、删除和查找操作的示例代码: ```c #include <stdio.h> #include <stdlib.h> #define MAXSIZE 100 // 定义顺序表最大长度 typedef struct { int data[MAXSIZE]; // 存储元素的数组 int length; // 当前顺序表长度 } SeqList; // 初始化顺序表 void InitList(SeqList *L) { L->length = 0; } // 插入元素 int ListInsert(SeqList *L, int pos, int e) { if (pos < 1 || pos > L->length + 1 || L->length == MAXSIZE) { return 0; // 插入位置不合法或顺序表已满,插入失败 } for (int i = L->length; i >= pos; i--) { L->data[i] = L->data[i - 1]; // 从后往前移动元素 } L->data[pos - 1] = e; // 插入新元素 L->length++; // 长度加1 return 1; // 插入成功 } // 删除元素 int ListDelete(SeqList *L, int pos) { if (pos < 1 || pos > L->length) { return 0; // 删除位置不合法,删除失败 } for (int i = pos - 1; i < L->length - 1; i++) { L->data[i] = L->data[i + 1]; // 从前往后移动元素 } L->length--; // 长度减1 return 1; // 删除成功 } // 查找元素 int locateElem(SeqList *L, int e) { for (int i = 0; i < L->length; i++) { if (L->data[i] == e) { return i + 1; // 返回元素位置 } } return 0; // 未找到元素 } // 删除有序顺序表中的重复元素 void DelDuplicate(SeqList *L) { int i, j; for (i = 0, j = 1; j < L->length; j++) { if (L->data[i] != L->data[j]) { // 不相等,将当前元素向前移动 L->data[++i] = L->data[j]; } } L->length = i + 1; // 更新长度 } int main() { SeqList L; InitList(&L); // 插入元素 ListInsert(&L, 1, 1); ListInsert(&L, 2, 2); ListInsert(&L, 3, 3); ListInsert(&L, 4, 2); // 打印顺序表 printf("顺序表:"); for (int i = 0; i < L.length; i++) { printf("%d ", L.data[i]); } printf("\n"); // 删除元素 ListDelete(&L, 2); // 打印顺序表 printf("顺序表:"); for (int i = 0; i < L.length; i++) { printf("%d ", L.data[i]); } printf("\n"); // 查找元素 int pos = locateElem(&L, 2); if (pos) { printf("元素2的位置:%d\n", pos); } else { printf("未找到元素2\n"); } // 删除重复元素 DelDuplicate(&L); // 打印顺序表 printf("顺序表:"); for (int i = 0; i < L.length; i++) { printf("%d ", L.data[i]); } printf("\n"); return 0; } ``` 在上述代码中,我们使用结构体SeqList来定义顺序表,包含了存储元素的数组data和当前长度length。InitList函数用于初始化顺序表,ListInsert函数用于插入元素,ListDelete函数用于删除元素,locateElem函数用于查找元素,DelDuplicate函数用于删除有序顺序表中的重复元素。 在主函数中,我们先初始化顺序表,然后插入元素1、2、3、2,打印顺序表,删除位置为2的元素,再次打印顺序表,查找元素2的位置并打印,删除重复元素,最后再次打印顺序表
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值