头插法创建链表c语言
时间: 2023-08-15 09:15:08 浏览: 192
头插法创建链表是一种在链表头部插入新节点的方法。在C语言中,可以使用以下代码实现头插法创建链表:
```c
typedef struct Lnode {
char data;
struct Lnode* next;
} Lnode, *Linklist;
Linklist Establish_Linklist_head1(void) {
char arr\[5\] = {'a', 'b', 'c', 'd', 'e'};
int i = sizeof(arr) / sizeof(arr\[0\]);
Linklist l = (Linklist)malloc(sizeof(Lnode));
l->next = NULL;
l->data = arr\[i - 1\];
while (i--) {
Lnode* p = (Linklist)malloc(sizeof(Lnode));
p->data = arr\[i - 1\];
p->next = l;
l = p;
}
return l;
}
```
这段代码会创建一个带有头结点和头指针的链表,其中头结点的数据域为空,头指针指向第一个节点。通过循环将数组中的元素依次插入链表的头部,最后返回链表的头指针。
方法1和方法2都是使用头插法创建链表,它们的最终结果是一样的。方法1是在头结点之后插入新节点,而方法2是在链表的最前面插入新节点。方法2在产生头结点时可能会出现跨界访问的问题,但是编译器可能不会报错或警告。为了避免非法访问,可以改变循环条件,并在循环之后再插入一个头结点。方法2仅供参考,学习链表时建议使用方法1。
希望对你有帮助!
#### 引用[.reference_title]
- *1* *2* *3* [c语言单链表的创建(头插法和尾插法)](https://blog.csdn.net/m0_69251699/article/details/129103530)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
阅读全文