| 
 | 
 
C语言链表学习实例,链表初始化,利用尾指针将两个链表链接在一起。 
C语言链表学习实例,链表初始化,利用尾指针将两个链表链接在一起。 
 
 
这个实例中,讲解了如何使用两个单循环链表利用尾指针连接,代码如下: 
-  
 
 - #include<stdio.h>
 
 - #include<stdlib.h>
 
 - typedef struct CLinkList
 
 - {
 
 -     struct CLinkList* next;
 
 -     int data;
 
 - } node;
 
 - node* ds_init(node** pNode);
 
 - void ds_traverse(node* pNode);
 
 - node* connect(node* A, node* B);
 
 -  
 
 - node* ds_init(node** pNode)
 
 - {
 
 -     int item;
 
 -     node* temp;
 
 -     node* target;
 
 -     node* r = NULL;
 
 -     printf("输入结点的值,输入0完成初始化\n");
 
 -     while (1)
 
 -     {
 
 -         scanf("%d", &item);
 
 -         fflush(stdin);
 
 -         if (item == 0) {
 
 -             break;
 
 -         }
 
 -         if ((*pNode) == NULL) {
 
 -             *pNode = (node*)malloc(sizeof(struct CLinkList));
 
 -             if (!*pNode) {
 
 -                 exit(0);
 
 -             }
 
 -             (*pNode)->data = item;
 
 -             (*pNode)->next = *pNode;
 
 -             r = *pNode; // 设置尾指针          
 
 -         }
 
 -         else
 
 -         {
 
 -             temp = (node*)malloc(sizeof(struct CLinkList));
 
 -             if (!temp) {
 
 -                 exit(0);
 
 -             }
 
 -             temp->data = item;
 
 -             temp->next = (*pNode)->next;
 
 -             (*pNode)->next = temp;
 
 -             *pNode = temp;
 
 -         }
 
 -     }
 
 -     return r;
 
 - }
 
 - void ds_traverse(node* pNode)
 
 - {
 
 -     node* temp = pNode;
 
 -     printf("*****************链表中的元素*********************\n");
 
 -     do
 
 -     {
 
 -         printf("%4d", temp->data);
 
 -         temp = temp->next;
 
 -     } while (temp != pNode);
 
 -     printf("\n");
 
 - }
 
 - node* connect(node* A, node* B)
 
 - {
 
 -     node* p = A->next;
 
 -     A->next = B->next;
 
 -     B->next = p;
 
 -     return B;
 
 - }
 
 - int main()
 
 - {
 
 -     node* pHead1 = NULL;
 
 -     node* A = ds_init(&pHead1);
 
 -     ds_traverse(pHead1);
 
 -     node* pHead2 = NULL;
 
 -     node* B = ds_init(&pHead2);
 
 -     ds_traverse(pHead2);
 
 -     connect(A, B);
 
 -     ds_traverse(pHead1);
 
 -     return 0;
 
 - }
 
  复制代码 
 
 
 |   
 
 
 
 |