用c语言写出代码实现以单链表作为存储结构,将线性表扩展2倍,假设线性表为(a1,az,…,a),扩展后为(a1,a1,a2,az,…,an,an)
时间: 2024-10-11 22:09:37 浏览: 5
在C语言中,扩展一个单链表,使得每个元素在其后添加一个相同的元素,可以通过遍历链表并在适当的位置插入新的元素来实现。以下是一个基本的代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义链表节点结构体
typedef struct ListNode {
int data;
struct ListNode *next;
} ListNode;
// 创建新节点
ListNode* createNode(int value) {
ListNode* newNode = (ListNode*)malloc(sizeof(ListNode));
newNode->data = value;
newNode->next = NULL;
return newNode;
}
// 扩展链表
ListNode* extendList(ListNode* head) {
ListNode* extendedHead = head;
while (head->next != NULL) {
head->next->next = createNode(head->data); // 插入复制节点
head = head->next;
}
head->next = createNode(head->data); // 最后一个节点也需要复制
return extendedHead;
}
int main() {
// 假设输入链表已经初始化
ListNode* inputList = ...; // 这里填写实际的链表头部
// 扩展链表
ListNode* extendedList = extendList(inputList);
// 打印新链表验证结果
while (extendedList != NULL) {
printf("%d ", extendedList->data);
extendedList = extendedList->next;
}
return 0;
}
```