用C语言设计整数单链表的基本运算程序,并用相关数据进行测试输入顺序输入单链表A的各个元素输出第一行:创建单链表A后,输出所有元素第二行:删除第一个元素,输出删除后的所有元素第三行:输出删除元素后表的长度第四行:在第二元素处插入一个新的元素100第五行:输出第一个元素100所在位置
时间: 2024-10-08 12:22:25 浏览: 49
在C语言中,我们可以使用结构体定义一个整数单链表,并提供基本的插入、删除和查找操作。首先,我们定义一个节点结构:
```c
typedef struct Node {
int data;
struct Node* next;
} Node;
```
然后,我们可以实现链表的操作函数:
```c
// 创建链表
Node* createList(int arr[], int n) {
Node* head = NULL;
for (int i = 0; i < n; i++) {
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = arr[i];
newNode->next = head;
head = newNode;
}
return head;
}
// 输出链表元素
void printList(Node* head) {
Node* temp = head;
while (temp != NULL) {
printf("%d ", temp->data);
temp = temp->next;
}
printf("\n");
}
// 删除第一个元素
void deleteFirst(Node** head) {
if (*head == NULL) return;
Node* temp = *head;
*head = (*head)->next;
free(temp);
}
// 插入新元素
void insertAt(Node** head, int index, int value) {
if (index <= 0 || *head == NULL) return;
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = value;
newNode->next = *head;
Node* prev = NULL;
for (int i = 0; i < index - 1 && *head != NULL; i++, prev = *head) {
*head = (*head)->next;
}
if (prev != NULL)
prev->next = newNode;
else
head = newNode;
}
// 查找元素并输出其位置
int findPosition(Node* head, int value) {
Node* temp = head;
int position = 0;
while (temp != NULL) {
if (temp->data == value) break;
temp = temp->next;
position++;
}
if (temp == NULL) return -1; // 如果没找到返回-1
return position;
}
// 示例测试
int main() {
int arr[] = {1, 2, 3, 4, 5};
int n = sizeof(arr) / sizeof(arr[0]);
Node* listA = createList(arr, n);
printf("创建单链表A后,输出所有元素:\n");
printList(listA);
deleteFirst(&listA);
printf("删除第一个元素后,输出所有元素:\n");
printList(listA);
printf("删除元素后表的长度: %d\n", findLength(listA)); // 自己实现findLength函数
insertAt(&listA, 1, 100); // 在第二个元素处插入100
printf("插入100后的链表,输出第一个元素100所在位置: %d\n", findPosition(listA, 100));
return 0;
}
```
阅读全文