利用尾插法建立单链表并输入链表创建单链表的长度请输入要取的元素位置以及元素位置上的元素是多少通过mian函数组装
时间: 2024-11-30 22:17:01 浏览: 1
尾插法建单链表-C数据结构课件(线性表)
尾插法是一种在单链表的末尾插入节点的方法,它不需要预先知道链表的长度,而是动态地将新节点添加到当前列表的最后。以下是使用C语言的基本步骤来创建单链表、输入链表长度以及获取指定位置元素:
1. **创建单链表结构**:
首先,我们需要定义一个链表节点结构,包含数据域`data`和指向下一个节点的指针`next`。
```c
typedef struct Node {
int data; // 节点的数据
struct Node* next; // 指向下一个节点的指针
} ListNode;
```
2. **创建链表**:
使用循环或递归的方式,在每次迭代或递归时,创建一个新的节点并将它设置为最后一个节点的`next`。
```c
void appendToList(ListNode** head, int value) {
if (*head == NULL) {
*head = (ListNode*)malloc(sizeof(ListNode));
(*head)->data = value;
(*head)->next = NULL;
} else {
ListNode* last = *head;
while (last->next != NULL) {
last = last->next;
}
last->next = (ListNode*)malloc(sizeof(ListNode));
last->next->data = value;
last->next->next = NULL;
}
}
```
3. **输入链表长度**:
可以让用户逐个输入节点值,并统计已添加的节点数,这就是链表的长度。
4. **获取指定位置元素**:
定义一个函数,接收链表头指针和索引作为参数,遍历链表直到找到目标位置。
```c
int getElementAtPosition(ListNode* head, int position) {
ListNode* current = head;
for (int i = 0; i < position && current != NULL; i++) {
current = current->next;
}
return current ? current->data : -1; // 返回-1表示位置越界
}
int main() {
ListNode* head = NULL;
int length, elementPos, elementValue;
// 输入链表长度和节点值...
length = inputLength(head); // 获取链表实际长度
elementPos = getInputPosition(); // 用户输入需要获取的元素位置
elementValue = getElement(head, elementPos);
printf("Element at position %d is %d.\n", elementPos, elementValue);
return 0;
}
```
阅读全文