C语言链表学习实例,链表初始化,利用尾指针将两个链表链接在一起。

C语言链表学习实例,链表初始化,利用尾指针将两个链表链接在一起。

C语言链表学习实例,链表初始化,利用尾指针将两个链表链接在一起。_第1张图片

这个实例中,讲解了如何使用两个单循环链表利用尾指针连接,代码如下:


#include
#include
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;
}

你可能感兴趣的:(c语言,链表,学习)