头插法建立单链表c
时间: 2023-09-25 11:12:20 浏览: 151
假设要建立一个单链表c,可以按照以下步骤进行:
1. 定义一个单链表的结构体,包含数据域和指针域:
```
typedef struct Node{
int data; // 数据域
struct Node *next; // 指针域
}Node,*LinkList;
```
2. 初始化单链表c,即创建一个头结点,并将头指针指向该节点:
```
LinkList c = (LinkList)malloc(sizeof(Node)); // 创建头结点
c->next = NULL; // 头结点的指针域为空
```
3. 依次插入节点,使用头插法将新节点插入到链表中:
```
int i;
for(i=1;i<=n;i++){ // n为节点个数
LinkList p = (LinkList)malloc(sizeof(Node)); // 创建新节点
p->data = i; // 新节点的数据域为i
p->next = c->next; // 将新节点插入到头结点之后
c->next = p; // 头指针指向新节点
}
```
4. 最后,遍历链表c,输出每个节点的数据域:
```
LinkList p = c->next; // 指向第一个节点
while(p != NULL){ // 遍历链表
printf("%d ", p->data); // 输出节点的数据域
p = p->next; // 指向下一个节点
}
```
相关问题
c语言头插法建立单链表
c语言中,使用头插法可以方便地建立单链表。头插法是指将新的节点插入到链表的头部的方法。
首先,我们需要定义一个结构体来表示节点:
```c
typedef struct Node {
int data; // 节点数据
struct Node* next; // 指向下一个节点的指针
} Node;
```
然后,我们可以使用头插法来建立单链表,具体步骤如下:
1. 创建一个头节点,并将其初始化为NULL,表示链表为空。
2. 读取第一个节点的数据。
3. 如果读取到的数据不为0(或其它结束标志),则继续执行下面的步骤;否则跳到第7步。
4. 创建一个新节点,并将读取到的数据存入新节点的data中。
5. 将新节点的next指针指向头节点指向的节点(即原来的第一个节点)。
6. 更新头节点的指针,使其指向新节点,表示新节点成为链表的第一个节点。
7. 链表建立完成。
下面是一个示例代码,用于展示如何使用头插法建立单链表:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct Node {
int data;
struct Node* next;
} Node;
Node* createLinkedList() {
Node* head = NULL;
Node* newNode = NULL;
int data;
printf("请输入节点数据(以0作为结束标志):\n");
do {
printf("节点数据:");
scanf("%d", &data);
if (data == 0) {
break;
}
newNode = (Node*)malloc(sizeof(Node));
newNode->data = data;
newNode->next = head;
head = newNode;
} while (1);
return head;
}
void printLinkedList(Node* head) {
Node* currentNode = head;
printf("链表数据:");
while (currentNode != NULL) {
printf("%d ", currentNode->data);
currentNode = currentNode->next;
}
printf("\n");
}
int main() {
Node* head = createLinkedList();
printLinkedList(head);
return 0;
}
```
通过运行以上代码,可以根据输入的节点数据建立单链表,并将建立的链表数据打印出来。
用C语言头插法建立单链表
在C语言中,头插法(Insertion at the beginning)是指在单链表的头部添加新节点的操作。这里是一个简单的步骤描述:
1. **创建新节点**:首先,你需要创建一个新的节点结构体,它通常包含两个部分:数据域和指向下一个节点的指针(如果是在头结点,则下一个节点将是第一个实际元素)。
```c
typedef struct Node {
int data; // 数据域存储整数
struct Node* next; // 指向下一个节点的指针
} Node;
```
2. **定义头结点**:如果你的链表还没有节点,需要先创建一个头结点,它通常是空的,`next` 指针指向 `NULL`。
```c
Node* head = NULL; // 初始化头结点
```
3. **插入操作**:创建新的节点,并将它的 `next` 指针设置为当前的头结点,然后更新头结点的指针指向新节点。
```c
void insertAtBeginning(int value) {
Node* newNode = (Node*)malloc(sizeof(Node)); // 分配内存给新节点
newNode->data = value;
newNode->next = head; // 新节点的 next 指向原头结点
if (head != NULL) // 如果已有元素,更新头结点的 next 指针
head = newNode; // 新节点成为了新的头结点
else // 否则,新节点既是头结点也是唯一节点
head = newNode;
}
```
阅读全文
相关推荐













