C语言链表头插法逆向输出

输入:1 2 3 4 5 -1

输出:5 4 3 2 1

此题考查头链表的创建之一 :头插法。所谓头插法是从一个空链表开始,重复读入数据,生成新结点,将读入的数据存放新结点的数据域中,然后讲新结点插入到当前链表的头结点之后,直至读入结束标志为止。

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

typedef struct Node
{
int data ;
struct Node * pNext ;
}* PNODE ,NODE ;
PNODE creat_list(void) ;
void show_list(PNODE phead) ;

int main()
{
PNODE phead = NULL ;
phead = creat_list() ;
show_list(phead) ;
return 0 ;
}
PNODE creat_list(void)
{
int val;
PNODE phead = (PNODE)malloc(sizeof(NODE)) ; //为头指针开辟内存空间
phead->pNext = NULL ; //初始化空链表
// PNODE pNew =NULL ;//初始化新结点
while(1)
{
scanf("%d",&val);
if(val<0 ) break ;
PNODE pNew =(PNODE)malloc(sizeof(NODE)) ; //// 为新结点开辟内存空间
pNew->data = val ;
pNew->pNext = phead->pNext ;//! 将头指针所指向的下一个结点的地址,赋给新创建结点的next
phead->pNext = pNew ; //!把新结点挂到头结点后面(插入)

}

return phead ;
}
void show_list(PNODE phead)
{
PNODE p = phead->pNext ;
while(p!=NULL)
{
printf("%d ",p->data);
p=p->pNext ;
}
printf("\n");
}

原文地址:https://www.cnblogs.com/cocobear9/p/12241575.html

时间: 2024-09-30 02:29:53

C语言链表头插法逆向输出的相关文章

建立链表—头插法、尾插法—有无头结点

1.建立链表-头插法-头结点 1 //建立链表-头插法-头结点 2 LinkList CreatList_head() 3 { 4 DataType x; //数据 5 LinkList p,head; //结点 6 head = (LinkList)malloc(sizeof(LNode)); 7 head->next = NULL; 8 head->data = 0; 9 10 scanf("%d",&x); 11 while(x != 999) 12 { 13

链表的遍历-逆向输出1

#include<stdio.h> #include<stdlib.h> #define N 9 typedef struct node{ int  data; struct node * next; }ElemSN; ElemSN  * Createlink(int a[],int n){ int i; ElemSN * h=NULL,* tail, * p; for( i=0;i<N;i++){ p=(ElemSN *)malloc(sizeof(ElemSN)); p-

[PHP] 数据结构-单链表头插法PHP实现

1.创建头结点 2.创建新结点 3.新结点next指向头结点next 4.头结点next指向新结点 <?php class Node{ public $data; public $next; } //头创建一个链表 $linkList=new Node(); $linkList->next=null;//头结点 for($i=1;$i<=10;$i++){ $node=new Node(); $node->data="aaa{$i}";//创建新结点$node

头插法尾插法按位置插入创建删除链表

/* * 时间:2015年7月28日07:54:10 * 项目:单链表(头插法和尾插法) */ # include <stdio.h> typedef int ElemType; typedef struct Node{ Node *next; ElemType data; }LinkList; /*头插法,拥有头指针*/ void InitLinkListHead(LinkList *headList) { headList->next = NULL; headList->dat

头插法链表拆分

1 #include <stdio.h> 2 #include <stdlib.h> 3 /* 4 头插法链表拆分:1,建立空链表.2插入节点.3遍历输出插入节点后的链表数据 5 */ 6 typedef struct node 7 { 8 int data; 9 struct node * next; 10 }NODE; 11 //1.建立空链表 12 NODE * createList() 13 { 14 NODE * head = (NODE *)malloc(sizeof(

头插法链表的基本操作:创建空链表,插入结点,遍历链表,求链表长度,查找结点,删除结点

1 #include <stdio.h> 2 #include <stdlib.h> 3 /* 4 头插法链表的基本操作:创建空链表,插入节点,遍历输出节点数据,求链表长度,查找结点,删除结点. 5 */ 6 typedef struct node 7 { 8 int data; 9 struct node * next; 10 }NODE; 11 //创建空链表 12 NODE * createList() 13 { 14 NODE * head = (NODE *)malloc

单链表 初始化 创建 头插法 尾插法 插入 删除 查找 合并 长度

#include <stdio.h> #include <stdlib.h> #define OK 1 #define ERROR -1 #define TRUE 1 #define FALSE -1 #define NULL 0 #define OVERFLOW -2 #define ElemType int #define Status int typedef int ElemType typedef int Status #define LEN sizeof(LNode) #

单链表的练习-头插法

/*单链表的练习-头插法*/ /*单链表由头结点就可以唯一确定*/ #include <malloc.h> #include <stdio.h> #include <stdlib.h> //定义单链表结构 typedef struct Node{ int data;  //数据域 Node * pNext;  //指针域 }NODE,* PNODE; PNODE create_list(void);  //创建链表 void show_list(PNODE pHead)

《线性表的基础操作(实现了可以选择在创建初始链表时,是用头插法,还是用尾插法)》

#include<stdio.h>#include<stdlib.h>#include<conio.h>#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define INFEASIBLE -1#define OVERFLOW -2#define NULL 0typedef int Status;typedef int ElemType; //------线性表的单链表存储结构-------- typede