栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

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

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

带头结点的头插法(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 科特·柯本)
 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/656624.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号