Cのような言語線形テーブルの演習:1回トラバースすることにより、元のテーブルのストレージスペースを使用しながら、リンクリスト内のすべてのノードのリンク方向を逆にします。

このコードは正常に実行できます。これは実際のC言語
分析です。テール補間法が確立され、フロント補間法が逆になっています。

#include<stdio.h>
#include<stdlib.h>

typedef int ElemType;
typedef struct LNode
{
    ElemType data;
    LNode *next;
}LNode,*LinkList;

//创建单链表 尾插法
void CreateList(LinkList &L,int n)
{
    LNode *r,*p;
    L = new LNode;
    L->next = NULL;
    r = L;
    printf("输入链表元素\n");
    for(int i=0;i<n;i++)
    {
        p = new LNode;
        scanf("%d",&p->data);
        p->next = NULL;
        r->next = p;
        r = p;
    }
}

//逆转(利用前插法)
void Inverse(LinkList &L)
{
    LinkList p,q;
    p = L->next;
    L->next = NULL;
    //前插法
    while(p != NULL)
    {
        q = p->next;
        p->next = L->next;
        L->next = p;
        p = q;
    }
}

void Display(LinkList &L)
{
    LNode *p;
    p = L->next;

    while(p != NULL)
    {
        printf("%d ",p->data);
        p = p->next;
    }
	printf("\n");
}

int main()
{
    int n;
    LinkList L;
    printf("请输入单链表的长度:\n");
    scanf("%d",&n);

    CreateList(L,n);

    printf("逆转后的单链表为:\n");
    Inverse(L);
    Display(L);

    return 0;
}


元の記事を56件公開 53 件を賞賛 2327回の訪問

おすすめ

転載: blog.csdn.net/September_C/article/details/105616080