创建不带头节点的单链表

带头节点:第一个节点不带数据

 

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


typedef struct node
{
	int info;
	struct node *next;
}node;

尾插法:链表顺序和 数据输入顺序一致

node *creatr()
{
	node *head, *p, *r;
        //head用来保存头指针
        //p用来产生新的节点
        //r用来记录尾指针,以便插入新节点
	int data;
	head=NULL;
	r=NULL;
	scanf("%d", &data);
	while(data!=-1)
	{
		p=(node *)malloc(sizeof(node));
                //用条件语句区分第一个节点是否为空
		if(head==NULL)
			head=p;
		else
			r->next=p;
		r=p;
		p->info=data;
		scanf("%d", &data);
	}
        //在输入完数据后,尾指针指向NULL
	if(head!=NULL)
		r->next=NULL;
	return head;
}

 首插法,也称栈式建表法,链表顺序和数据输入顺序相反,

node *creatf()
{
	
	node *p, *head;
	int data;
	p=NULL;
	head=NULL;
	scanf("%d", &data);
	while(data!=-1)
	{
		p=(node *)malloc(sizeof(node));
		//条件语句划分第一个节点是否为空
		if(head==NULL)
		{
			head=p;
			head->next=NULL;
		}
		else
			p->next=head;
		//从尾端开始创建,head不断往前移
		head=p;
		p->info=data;
		scanf("%d", &data);
	}
	return head;
}

 

在Java中创建不带头结点单链表,可以按照以下步骤进行操作: 1. 创建一个Node类,用于表示链表的节点。该类包含两个成员变量:val表示节点的值,next表示指向下一个节点的引用。 2. 创建一个SingleLinkedList类,用于表示单链表。该类包含一个成员变量:head表示链表的头节点。 3. 在SingleLinkedList类中,定义一个add方法,用于在链表末尾添加节点。首先判断链表是否为空,如果为空,则将新节点作为头节点。如果链表不为空,则从头节点开始遍历到最后一个节点,将新节点添加到最后一个节点的next引用。 4. 在SingleLinkedList类中,定义一个toString方法,用于遍历链表并将节点的值按顺序输出。从头节点开始,依次将节点的值拼接成字符串,并使用"->"作为节点之间的分隔符,最后在字符串末尾添加"NULL"标记。 下面是使用Java创建不带头结点单链表的示例代码: ``` //节点类 class Node { int val; Node next; } //单链表类 public class SingleLinkedList { private Node head; //在链表末尾添加节点 public void add(int val) { Node newNode = new Node(); newNode.val = val; if (head == null) { head = newNode; } else { Node current = head; while (current.next != null) { current = current.next; } current.next = newNode; } } //遍历链表并输出节点的值 public String toString() { String ret = ""; Node current = head; while (current != null) { ret += current.val + "->"; current = current.next; } ret += "NULL"; return ret; } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值