带头结点的头插法(pta 单链表逆序)

带头结点的头插法(pta 单链表逆序),第1张

带头结点的头插法(pta 单链表逆序

先复习一下有头节点的单向链表头插法

为了方便理解,不将函数单独提出来写。

#include
#include
struct node
{
	int  data;
	struct node *next;
};
int main()
{
	struct node *p,*q,*head;
	int a,n,i;
	head=(struct node *)malloc(sizeof(struct node));//头节点的创建 
	head->next=NULL;
	scanf("%d",&n);
	for(i=0;idata=a;//录入数据 
		p->next=head->next;//让新节点指向原来的第一个节点 
		head->next=p;		  //把新节点连到head后面,作为新的第一个节点 
	}
	q=head->next;
	while(q)
	{
		printf("%d ",q->data);
		q=q->next;
	}
	return 0;
}
typedef struct Node *PtrToNode;
struct Node {
    ElementType Data; 
    PtrTonode   Next; 
};
typedef PtrTonode List; 




#include 
#include 

typedef int ElementType;
typedef struct Node *PtrToNode;
struct Node {
    ElementType Data;
    PtrTonode   Next;
};
typedef PtrTonode List;

List Read(); 
void Print( List L ); 

List Reverse( List L );

int main()
{
    List L1, L2;
    L1 = Read();
    L2 = Reverse(L1);
    Print(L1);
    Print(L2);
    return 0;
}

函数Reverse通过对原链表 *** 作,让本来存放的 1 2 3 4 5

就能变成5 4 3 2 1输出   

List Reverse(List L){
    if(L == NULL) return L;
    List temp = L -> Next;
    L->Next = NULL;//清空原链表
    while(temp){
        List p = temp;
        temp = temp -> Next;
        p -> Next = L;//头插法
        L = p;
    }
    return L;
}

                                      ----与其凋零,不如燃烧。(by 科特·柯本)
 

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5658704.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存