c语言的函数插入,线性表的插入函数

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

//SY2-2.CPP #include

#define MAXSIZE 100

void Disp_A(int A[],int num) /*输出向量*/

{

if(num==0) return; /*如果向量为空直接返回*/

for(int i=0;i

cout<

cout<

} int insert(int A[],int &num,int x) //成功返回1、否则返回0

{

if(num==MAXSIZE-1 ) return 0;//向量已满

int i=num ; //i指向尾元素

while(i>=0&&A[i]>x)

{

A[i-1]=A[i];//比x大的元素后移

i--;

}

A[i]=x;//新元素插入

num++; //表长增1

return 1;

} main()

{

int a[MAXSIZE]={3,11,14,17,21,22,26,29,30,32,35,37,42,48,53,57,60,71,74,88};

/*定义长度为arrsize的整型向量,并对前20个元素赋初值*/

int num=20; //定义顺序表当前表长

int x;

cout<

Disp_A(a,num); /* 调用输出函数*/

cout<

cin>>x; //输入要插入的元素值

insert(a,num,x) ; /* 调用插入函数*/

cout<

Disp_A(a,num); /* 调用输出函数*/

}

我这个可以运行 但输入数字 总是插到最后 不知道插入函数哪里不对

C语言中,线性表(数组或链表)的顺序插入操作通常涉及以下几个步骤: 1. **静态数组插入**: - 如果是在固定大小的数组中插入,你需要找到插入位置,将后续元素右移一位(如果数组满则可能会触发越界检查)。 ```c void insert_array(int arr[], int size, int index, int value) { if (index < 0 || index > size) return; for (int i = size - 1; i >= index; i--) { arr[i + 1] = arr[i]; } arr[index] = value; } ``` 2. **动态数组插入**(如一维指针数组): - 类似地,遍历从目标插入位置到数组结尾,逐个把元素后移。 ```c void insert_dynamic_array(int* arr, int size, int index, int value) { if (index >= size) { // 扩容新数组 arr = realloc(arr, (size + 1) * sizeof(int)); } for (int i = size; i > index; i--) { arr[i] = arr[i - 1]; } arr[index] = value; } ``` 3. **链接列表插入**: - 对于链表,你需要创建一个新的节点并调整头结点的指针,然后依次调整后续节点的指针。 ```c struct Node { int data; struct Node* next; }; void insert_linked_list(struct Node** head, int value, int index) { struct Node* newNode = malloc(sizeof(struct Node)); newNode->data = value; newNode->next = *head; if (index == 0) { *head = newNode; } else { struct Node* current = *head; for (int i = 1; i < index && current != NULL; i++) { current = current->next; } if (current) { newNode->next = current->next; current->next = newNode; } else { printf("Index out of bounds."); } } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值