单链表尾插法与头插法

来源:互联网 发布:垦丁民宿排名 知乎 编辑:程序博客网 时间:2024/05/29 15:26

在创建单项链表的时候我们经常有两种选择的创建方式:头插法和尾插法,在用C开发的项目中会经常用到,所以我们就在这里总结一下:

***************************我是分割线****************************

尾插法建立单链表:

/* * Data:          14-11-4 * Version number:1 * Autor:         Elian World   **/ void CreatelistR(LNode *&C,int a[],int n)// C为单链表的表头节点,a为链表对应元素,n为元素个数{LNode *s,*r;                         // s用来指向新申请的结点,r始终指向C的终端结点int i;C = (LNode *)malloc(sizeof(LNode));  // 申请C的头结点空间 C->next = NULL;r = C;                               // r指向头结点,因为此时头结点就是终端结点 for(i = 1;i <= n;i++)                // 循环申请n个结点来接受数组a中的元素 {s = (LNode *)malloc(sizeof(LNode));// s指向新申请的结点 s->data = a[i];                 // 用新申请的结点来接受a中的一个元素 r->next = s;                     // 用r来接纳新结点 r = r->next;                     // r指向终端结点,以便于接纳下一个到来的结点 }r->next = NULL;                      // 数组a中所有的元素都已经装入链表C中,C的终端结点的                                     // 指针域置为NULL,C建立完成 } 

头插法建立单项链表:

/* * Data:          14-11-4 * Version number:1 * Autor:         Elian World   **/void CreatelistF(LNode *&C,int a[],int n){LNode *s;int i;C = (LNode *)malloc(sizeof(LNode));c->next = NULL;for(i = 1;i <= n;i++){s = (LNode *)malloc(sizeof(LNode));s->data = a[i];/*下面两句是头插法的关键步骤*/s->next = C->next;               // s所指新结点的指针域next指向C中的开始结点C->next = s;                     // 头结点的指针域next指向s结点,使得s成为了新的开始结点 }}

1 0
原创粉丝点击