单链表elemtype是什么
时间: 2023-05-26 09:02:15 浏览: 75
elemtype是单链表中节点存储的数据类型,可以是任意的数据类型,如int、char、结构体等。在单链表中,每个节点包含一个数据元素和一个指向下一个节点的指针。节点的数据元素就是elemtype类型的变量。
相关问题
尾插法建立单链表 c
尾插法是一种常用的方法来建立单链表。在尾插法建立单链表时,我们首先创建一个头节点,并将其指针指向NULL。然后,依次读入元素并插入链表的尾部,直到读到结束符号为止。具体步骤如下所示:
1. 创建头节点,并将其指针指向NULL。
2. 创建一个指针p,使其指向头节点。
3. 读入第一个元素,创建一个新节点s,并将元素赋值给s的data域。
4. 将p的指针指向新节点s,并将p指向s。
5. 重复步骤3和步骤4,直到读到结束符号为止。
6. 将p的指针指向NULL,表示链表的结尾。
下面是尾插法建立单链表的C语言代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
typedef int ElemType;
typedef struct LNode {
ElemType data;
struct LNode *next;
} LNode, *LinkList;
LinkList Create() {
LinkList L, p, s;
ElemType e;
L = (LinkList)malloc(sizeof(LNode));
L->next = NULL;
p = L;
scanf("%d", &e);
while (e != -1) {
s = (LinkList)malloc(sizeof(LNode));
s->data = e;
p->next = s;
p = p->next;
scanf("%d", &e);
}
p->next = NULL;
return L;
}
void print(LinkList L) {
LinkList p;
p = L->next;
while (p) {
printf("%d ", p->data);
p = p->next;
}
}
int main() {
LinkList L = Create();
print(L);
return 0;
}
```
数据结构单链表合并主程序
合并两个单链表的主程序如下所示:
```c
#include <stdio.h>
#include <stdlib.h>
typedef int ElemType;
// 定义单链表的结点结构
typedef struct Node
{
ElemType data;
struct Node *next;
} Node, *LinkList;
// 初始化单链表
void InitList(LinkList *L)
{
*L = (LinkList)malloc(sizeof(Node));
(*L)->next = NULL;
}
// 头插法建立单链表
void CreateList(LinkList *L, ElemType *arr, int n)
{
int i;
Node *s;
*L = (LinkList)malloc(sizeof(Node));
(*L)->next = NULL;
for (i = 0; i < n; i++)
{
s = (Node *)malloc(sizeof(Node));
s->data = arr[i];
s->next = (*L)->next;
(*L)->next = s;
}
}
// 合并两个单链表
void MergeList(LinkList *L1, LinkList *L2, LinkList *L3)
{
Node *p1, *p2, *p3, *s;
p1 = (*L1)->next;
p2 = (*L2)->next;
p3 = (*L3);
while (p1 != NULL && p2 != NULL)
{
if (p1->data <= p2->data)
{
s = p1;
p1 = p1->next;
}
else
{
s = p2;
p2 = p2->next;
}
s->next = p3->next;
p3->next = s;
p3 = s;
}
p3->next = p1 ? p1 : p2;
}
// 打印单链表
void PrintList(LinkList L)
{
Node *p = L->next;
while (p != NULL)
{
printf("%d ", p->data);
p = p->next;
}
printf("\n");
}
int main()
{
LinkList L1, L2, L3;
int n1, n2;
ElemType *arr1, *arr2;
int i;
printf("请输入第一个单链表的长度: ");
scanf("%d", &n1);
arr1 = (ElemType *)malloc(sizeof(ElemType) * n1);
printf("请输入第一个单链表的元素: ");
for (i = 0; i < n1; i++)
{
scanf("%d", &arr1[i]);
}
InitList(&L1);
CreateList(&L1, arr1, n1);
printf("第一个单链表为: ");
PrintList(L1);
printf("请输入第二个单链表的长度: ");
scanf("%d", &n2);
arr2 = (ElemType *)malloc(sizeof(ElemType) * n2);
printf("请输入第二个单链表的元素: ");
for (i = 0; i < n2; i++)
{
scanf("%d", &arr2[i]);
}
InitList(&L2);
CreateList(&L2, arr2, n2);
printf("第二个单链表为: ");
PrintList(L2);
InitList(&L3);
MergeList(&L1, &L2, &L3);
printf("合并后的单链表为: ");
PrintList(L3);
return 0;
}
```
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)