用c语言写 在单链表的第i个元素之前插入一个值为x的元素,并输出插入后的单链表中各元素值。
时间: 2024-03-23 12:18:56 浏览: 27
以下是用C语言实现在单链表的第i个元素之前插入一个值为x的元素,并输出插入后的单链表中各元素值的代码。
```c
#include<stdio.h>
#include<stdlib.h>
//定义链表结构体
typedef struct node {
int data;
struct node* next;
}Node, * LinkList;
//创建单链表
LinkList CreateList(int n) {
LinkList L, p, q;
L = (LinkList)malloc(sizeof(Node));
L->next = NULL;
q = L;
printf("请输入%d个整数:\n", n);
for (int i = 0; i < n; i++) {
p = (LinkList)malloc(sizeof(Node));
scanf("%d", &p->data);
p->next = NULL;
q->next = p;
q = p;
}
return L;
}
//在单链表的第i个元素之前插入一个值为x的元素
void Insert(LinkList L, int i, int x) {
LinkList p, s;
int j = 1;
p = L->next;
while (p && j < i) {
p = p->next;
j++;
}
if (!p || j > i) {
printf("插入位置无效!\n");
return;
}
s = (LinkList)malloc(sizeof(Node));
s->data = x;
s->next = p->next;
p->next = s;
}
//输出单链表中各元素值
void PrintList(LinkList L) {
LinkList p;
p = L->next;
printf("单链表中各元素值为:");
while (p != NULL) {
printf("%d ", p->data);
p = p->next;
}
}
int main() {
LinkList L;
int n, i, x;
printf("请输入单链表的长度:");
scanf("%d", &n);
L = CreateList(n);
printf("请输入要插入的位置和元素值:");
scanf("%d %d", &i, &x);
Insert(L, i, x);
PrintList(L);
return 0;
}
```
以上代码实现了在单链表的第i个元素之前插入一个值为x的元素,并输出插入后的单链表中各元素值。