头插法创建单链表并输出
时间: 2024-05-19 14:10:25 浏览: 98
头插法建立单链表
头插法创建单链表并输出的方法如下所示:
首先,我们需要定义一个结构体来表示链表节点,包括数据域和指向下一个节点的指针。
然后,我们需要编写一个函数来实现头插法创建单链表。该函数的逻辑如下:
1. 首先声明一个头结点,并将其指针指向NULL。
2. 然后读取用户输入的数据,如果输入的数据不等于9999,则进行以下操作:
- 创建一个新的节点,并将用户输入的数据赋值给新节点的数据域。
- 如果头结点的下一个指针为空,将新节点的指针指向空,并将新节点赋值给头结点的下一个指针。
- 否则,将新节点的指针指向头结点的下一个指针,并将新节点赋值给头结点的下一个指针。
- 继续读取下一个用户输入的数据。
3. 最后,返回头结点。
接下来,我们需要编写一个函数来输出链表中的元素。该函数的逻辑如下:
1. 首先将传入的链表指针指向链表的第一个节点。
2. 然后,判断链表指针是否为空,如果不为空,则执行以下操作:
- 输出当前节点的数据域。
- 将链表指针指向下一个节点。
3. 重复步骤2,直到链表指针为空。
最后,我们在主函数中调用头插法创建单链表的函数和输出链表中元素的函数。
请注意,需要在程序开头包含<stdio.h>头文件,并且在头插法创建单链表的函数中使用动态内存分配函数malloc来分配节点内存空间。另外,还需注意在编写程序时,将Main函数定义在自定义函数的下方或者在上方写出定义了哪些方法。如果返回值是指针类型,在声明方法时,也需要加上指针符号。
下面是一个示例的代码:
```
#include<stdio.h>
#include<stdlib.h>
typedef struct node{
int data;
struct node *next;
} Lnode;
Lnode *Head_Insert(){
Lnode *ptemp = NULL;
Lnode *HeadNode = NULL;
Lnode *p;
HeadNode = (Lnode*)malloc(sizeof(Lnode));
HeadNode->next = NULL;
int x;
scanf("%d",&x);
while(x != 9999){
ptemp = (Lnode*)malloc(sizeof(Lnode));
ptemp->data = x;
ptemp->next = NULL;
if(HeadNode->next == NULL){
HeadNode->next = ptemp;
}
else{
ptemp->next = HeadNode->next;
HeadNode->next = ptemp;
}
scanf("%d",&x);
}
return HeadNode;
}
void printList(Lnode *L){
L = L->next;
while(L!=NULL){
printf("%d ",L->data);
L = L->next;
}
}
int main(){
Lnode *t =Head_Insert();
printList(t);
return 0;
}
```
这个代码会根据用户输入的数据,使用头插法创建一个单链表,并输出链表中的元素。<span class="em">1</span><span class="em">2</span>
阅读全文