尾插法链表拆分

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 /*
 4 尾插法链表拆分:1.建立空链表。2.插入节点。3.遍历并输出插入节点后的链表数据
 5 */
 6 typedef struct node
 7 {
 8     int data;
 9     struct node * next;
10 }NODE;
11 //建立空链表
12 NODE * createList()
13 {
14     NODE * head = (NODE *)malloc(sizeof(NODE));
15     head->next = NULL;
16
17     return head;
18 }
19 //插入节点
20 NODE * insertNode(NODE * pt,int nodeData)
21 {
22     NODE * cur = (NODE *)malloc(sizeof(NODE));
23     cur->data = nodeData;
24
25     pt->next = cur;
26     cur->next = NULL;
27     pt = cur;
28
29     return pt;
30 }
31 //遍历并输出插入节点后的链表元素
32 void traverList(NODE *head)
33 {
34     head = head->next;
35     while(head)
36     {
37         printf("%d\n",head->data);
38         head = head->next;
39     }
40 }
41
42 int main(void)
43 {
44     //建立空链表
45     NODE * head = createList();
46     //插入节点
47     NODE * pt = head;//定义pt保存尾节点的地址
48     for(int i=0;i<50;i++)
49     {
50         pt = insertNode(pt,i);
51     }
52     //遍历并输出插入节点后的链表元素
53     traverList(head);
54     return 0;
55 }

原文地址:https://www.cnblogs.com/wangchaomahan/p/9693975.html

时间: 2024-11-07 19:47:41

尾插法链表拆分的相关文章

C语言尾插法链表

算法示意图: #include <iostream> using namespace std; struct DATA {     int id;     char name[20]; }; struct info {     DATA data;     info * pNext; }; //头节点 info * g_Head = NULL; void CreateList() {     //创建头节点     info * pHead   = new info;     if(pHead

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

#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) #

单链表:头插法和尾插法

头插法: 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语言实现*/ #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; /*定义一个全局的静态的链表头节点指针

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

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

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

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

线性表的链式存储之单链表的尾插法

对单链表进行遍历.查找.插入.删除等操作,最终效果如下: 相关C代码如下: /*线性表的链式存储之单链表的尾插法*/ #include <stdio.h> #include <stdlib.h> #include <malloc.h> /*定义变量*/ typedef int DataType; typedef struct node{     //定义链表结点数据结构 DataType data; struct node * pNext; }NODE; typedef

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,

采用头插插法和尾插法建立单项链表

PS: 来源2014年数据结构联考复习指导 Page27. #include <iostream> #include <stdio.h> #include <stdlib.h> using namespace std; const int END_INPUT = -1; typedef struct LNode { int data; struct LNode *next; }LNode, *LinkList; LinkList CreatList1(LinkList