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)
    {
        pHead->data.id  = NULL;
        memset(pHead->data.name,0,10);

        pHead->pNext = NULL;
        
        g_Head = pHead;
    }
}

void Add(int id,char * str)
{
     info * pData   = new info;
     pData->data.id = id;
     strcpy(pData->data.name,str);
     pData->pNext = NULL;

     info * p = g_Head,*p1;
     while(p)
     {
        p1 = p;
        p = p->pNext;
     }

     p1->pNext = pData;

}

void print()
{
     info * p = g_Head;
     while(p)
     {
         cout << p->data.id << " " << p->data.name << endl;
         p = p->pNext;
     }
}

int main(int argc, char* argv[])
{
    CreateList();
    Add(1,"李大");
    Add(2,"王五");
    Add(3,"罗博特");

    print();

    getchar();
    return 0;
}

时间: 2024-08-10 17:18:01

C语言尾插法链表的相关文章

尾插法链表拆分

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

单链表的头插法和尾插法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

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

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

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

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

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

#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

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

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