建立链表—头插法、尾插法—有无头结点

1.建立链表-头插法-头结点

 1 //建立链表-头插法-头结点
 2 LinkList CreatList_head()
 3 {
 4     DataType x;                                 //数据
 5     LinkList p,head;                            //结点
 6     head = (LinkList)malloc(sizeof(LNode));
 7     head->next = NULL;
 8     head->data = 0;
 9
10     scanf("%d",&x);
11     while(x != 999)
12     {
13         p = (LinkList)malloc(sizeof(LNode));
14         p->data = x;                     //存数据
15         p->next = head->next;
16         head->next = p;
17         head->data++;                //结点计数
18         scanf("%d",&x);
19     }
20     return head;
21 }
22
23 //输出链表-头插法-头结点
24 void PrintList_head(LinkList p)
25 {
26     LinkList a;
27     a = p->next;
28     while(a != NULL)
29     {
30         printf("%d  ",a->data);
31         a = a->next;
32     }
33     printf("\n");
34 }

2.建立链表-头插法-无头结点

 1 //建立链表-头插法-无头结点
 2 LinkList CreatList()
 3 {
 4     DataType x;
 5     LinkList p,head;
 6     head = NULL;
 7
 8     scanf("%d",&x);
 9     while(x != 999)
10     {
11         p = (LinkList)malloc(sizeof(LNode));
12         p->data = x;
13         if(head == NULL)
14         {    head = p;
15             p->next = NULL;
16         }
17         else
18         {
19             p->next = head;
20             head = p;
21         }
22         scanf("%d",&x);
23     }
24     return head;
25 }
26
27
28 //输出链表-头插法-无头结点
29 void PrintList(LinkList p)
30 {
31     LinkList a;
32     a = p;
33     while(a != NULL)
34     {
35         printf("%d  ",a->data);
36         a = a->next;
37     }
38     printf("\n");
39 }

3.建立链表-尾插法-无头结点

 1 //建立链表-头插法-无头结点
 2 LinkList CCC()
 3 {
 4     DataType x;
 5     LinkList p,head;
 6     head = NULL;
 7
 8     scanf("%d",&x);
 9     while(x != 999)
10     {
11         p = (LinkList)malloc(sizeof(LNode));
12         p->data = x;
13         p->next = head;
14         head = p;
15
16         scanf("%d",&x);
17     }
18     return head;
19 }
20
21
22 //输出链表-头插法-无头结点
23 void PPP(LinkList p)
24 {
25     LinkList a;
26     a = p;
27     while(a != NULL)
28     {
29         printf("%d  ",a->data);
30         a = a->next;
31     }
32     printf("\n");
33 }

4.建立链表-尾插法-头结点

 1 //建立链表-尾插法-头结点
 2 LinkList Tailhead()
 3 {
 4     DataType x;
 5     LinkList p,head,r;
 6     head = (LinkList)malloc(sizeof(LNode));
 7     head->next = NULL;
 8     r = head;
 9     scanf("%d",&x);
10     while(x != 999)
11     {
12         p = (LinkList)malloc(sizeof(LNode));
13         p->data = x;
14         p->next = r->next;
15         r->next = p;
16         r = p;
17         scanf("%d",&x);
18     }
19
20     return head;
21 }
22 //输出链表-尾插法-头结点
23 void PrintTailhead(LinkList p)
24 {
25     LinkList a;
26     a = p->next;
27     while(a != NULL)
28     {
29         printf("%d  ",a->data);
30         a = a->next;
31     }
32     printf("\n");
33 }
时间: 2024-10-23 03:52:02

建立链表—头插法、尾插法—有无头结点的相关文章

头插法尾插法按位置插入创建删除链表

/* * 时间:2015年7月28日07:54:10 * 项目:单链表(头插法和尾插法) */ # include <stdio.h> typedef int ElemType; typedef struct Node{ Node *next; ElemType data; }LinkList; /*头插法,拥有头指针*/ void InitLinkListHead(LinkList *headList) { headList->next = NULL; headList->dat

单链表 初始化 创建 头插法 尾插法 插入 删除 查找 合并 长度

#include <stdio.h> #include <stdlib.h> #define OK 1 #define ERROR -1 #define TRUE 1 #define FALSE -1 #define NULL 0 #define OVERFLOW -2 #define ElemType int #define Status int typedef int ElemType typedef int Status #define LEN sizeof(LNode) #

C实现头插法和尾插法来构建单链表(不带头结点)

链表的构建事实上也就是不断插入节点的过程.而节点的插入能够分为头插法和尾插法. 头插法就是在头结点后插入该节点,始终把该节点作为第一个节点.尾插法就是在链表的最后一个节点处插入元素,作为最后一个节点.假设想要了解链表的概念和其它链表操作.请參考<数据结构与算法之链表><C语言实现链表的基本操作>两篇文章.演示样例代码上传至  https://github.com/chenyufeng1991/HeadInsertAndTailInsert . // // main.c // Hea

C实现头插法和尾插法来构建链表

链表的构建其实也就是不断插入节点的过程.而节点的插入可以分为头插法和尾插法.头插法就是在头结点后插入该节点,始终把该节点作为第一个节点.尾插法就是在链表的最后一个节点处插入元素,作为最后一个节点.如果想要了解链表的概念和其他链表操作,请参考<数据结构与算法之链表><C语言实现链表的基本操作>两篇文章.示例代码上传至  https://github.com/chenyufeng1991/HeadInsertAndTailInsert . // // main.c // HeadIns

C实现头插法和尾插法来构建非循环双链表(不带头结点)

在实际使用中,双链表比单链表方便很多,也更为灵活.对于不带头结点的非循环双链表的基本操作,我在<C语言实现双向非循环链表(不带头结点)的基本操作>这篇文章中有详细的实现.今天我们就要用两种不同的方式头插法和尾插法来建立双链表.代码上传至  https://github.com/chenyufeng1991/HeadInsertAndTailInsertDoubleList  . 核心代码如下: //尾插法创建不带头结点的非循环双向链表 Node *TailInsertCreateList(No

链表的头插法和尾插法

链表的头插法和尾插法 本文的链表均是带头结点的链表. 链表可以说是最简单的链式结构,在C语言中,通常用结构体封装其数据域及指针域作为一个结点. 今天我们说的是链表结点的构造方式以及插入方式. 尾插法 1 //尾插法 2 3 void createlistR(LNode *&C,int a[],int n){ 4 LNode *s,*r; 5 int i; 6 C = (LNode*)malloc(sizeof(LNode)); 7 C->next = NULL; 8 r = C; 9 for

单链表的头插法和尾插法c语言实现

/*单链表的头插法和尾插法c语言实现*/ #include <stdio.h>#include <stdlib.h>#include <string.h>#define SIZE 100/*简单的定义一个链表节点的数据单元*/typedef struct student_t{ int num; char name[SIZE]; struct student_t* pNext;}studentList, *pStudentList; /*定义一个全局的静态的链表头节点指针

单链表:头插法和尾插法

头插法: linklist *CreateList_Front() { linklist *head, *p; char ch; head = NULL; printf("依次输入字符数据(‘#’表示输入结束):\n"); ch = getchar(); while(ch != '#') { p = (linklist*)malloc(sizeof(linklist)); p->data = ch; p->next = head; head = p; ch = getcha

C/C++,数据结构实现两个链表的合并(尾插法建立单链表,求链表长度,直接插入排序)

1题目 实现两个链表的合并 2基本功能要求: 1.建立两个链表A和B,链表元素个数分别为m和n个. 2.假设元素分别为(x1,x2,-xm),和(y1,y2, -yn).把它们合并成一个线性表C,使得: 当m>=n时,C=x1,y1,x2,y2,-xn,yn,-,xm 当n>m时,C=y1,x1,y2,x2,-ym,xm,-,yn 3.输出线性表C: 用直接插入排序法对C进行升序排序,生成链表D,并输出链表D. 3测试数据: (1)A表(30,41,15,12,56,80) B表(23,56,

头插法和尾插法

. #include "stdio.h" #include "stdlib.h" typedef struct List { int data; //数据域 struct List *next; //指针域 } List; void TailCreatList(List *L) //尾插法建立链表 { List *s, *r;//s用来指向新生成的节点.r始终指向L的终端节点. r = L; //r指向了头节点,此时的头节点是终端节点. for (int i = 0