建立单链表的方法

#include<iostream>

using namespace std;

struct node{
	int d;
	struct node *next;
};//定义结点

node *build1()//头插法构造单链表
{
node *p;//指向新建结点
node *head;//头指针

head=NULL;
p=head;
int x;

cin>>x;
 while(x!=-1)
 {
	 p=new node;
	 p->d=x;
	 p->next=head;
	 head=p;
	 cin>>x;
 }

 return head;
	 
}

node *build2()//尾插法构造单链表
{ 
	node *head;//头指针
	node *p,*s;//p指向当前结点,s指向尾结点
    
	head=NULL;
	p=head;
	s=head;
    int x;
	cin>>x;
	while(x!=-1)
	{
		p=new node;
		p->d=x;
		if(!head)head=p;
		else 
		s->next=p;
		s=p;
		cin>>x;
	}
	if(s)s->next=NULL;

	return head;
}

int main()
{
	node *p;
	p=build2();

	while(p!=NULL)
	{
		cout<<(p->d);
		p=p->next;
	}

	return 0;
}

建立单链表的方法

时间: 2024-08-21 21:01:54

建立单链表的方法的相关文章

C/C++,数据结构实现两个链表的合并(尾插法建立单链表,求链表长度,直接插入排序)

1题目 实现两个链表的合并 2基本功能要求: 1.建立两个链表A和B,链表元素个数分别为m和n个. 2.假设元素分别为(x1,x2,-xm),和(y1,y2, -yn).把它们合并成一个线性表C,使得: 当m>=n时,C=x1,y1,x2,y2,-xn,yn,-,xm 当n>m时,C=y1,x1,y2,x2,-ym,xm,-,yn 3.输出线性表C: 用直接插入排序法对C进行升序排序,生成链表D,并输出链表D. 3测试数据: (1)A表(30,41,15,12,56,80) B表(23,56,

博客第二天——头插法建立单链表

今天是第二天,今天遇到一个题:本题要求实现一个函数,求单链表L结点的阶乘和.这里默认所有结点的值非负,且题目保证结果在int范围内. 首先考虑这个题目本身不难,鉴于本人刚学习数据结构,题目中已给代码的单链表的创建值得我考虑.题目中给的是头插法代码如下:分析一下这段代码 int N, i; List L, p; scanf("%d", &N); L = NULL; for ( i=0; i<N; i++ ) { p = (List)malloc(sizeof(struct

头插法建立单链表

#include<stdio.h>#include<stdlib.h> typedef struct node{ int data; struct node *next;}LNode,*LinkList; LinkList creat_list(){ LinkList head=NULL; head=(LinkList)malloc(sizeof(LNode)); if(head==NULL) { printf("memory out of use\n"); r

单链表的建立与打印

建立单链表,并且从头到尾打印单链表 #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<stdlib.h> #include<assert.h> typedef int DataType; typedef struct LinkNode { DataType data;//定义节点的数据 struct LinkNode *next;//保存下一个节点的地址 }LinkNode,*pList,*pLin

单链表的初始化,建立,插入,查找,删除。

#include <stdio.h> #include <stdlib.h> typedef int ElemType; //定义结点类型 typedef struct Node { ElemType data;              //单链表中的数据域 struct Node *next;          //单链表的指针域 }Node,*LinkedList; //单链表的初始化 LinkedList LinkedListInit() { Node *L; L = (N

对于&quot;单链表逆置和递归&quot;的问题的理解.

一. 相关知识要点: 学习或了解基础数据结构和C语言, 对基础链表知识或相关知识有概况性认识. 例如: 本题目结构为: 1 #define elem_type int 2 3 typedef struct _single_list { 4 elem_type data; //所存的数据元素 5 _single_list *next; //所存的指针元素 6 }ListNode; 二. 问题的思考过程(本题以3种不同的方法解决): <1>类似于我们学习的C语言基础知识中的冒泡排序(参考C程序设计

线性表的单链表的定义、初始化等操作

#include <stdio.h> #include <stdlib.h> #define OK 1 #define ERR 0 #define MAXSIZE 100 typedef int ElemType; //定义 typedef struct Node { ElemType data; struct Node *next; }Node,*LinkedList; //初始化 LinkedList LinkedListInit() { Node *L; L = (Node

单链表——带头节点

一.链表简介 1 数据结构中,链表是最基础的.然而链表根据不同的需求分成的种类很多,单向或双向链表,循环或非循环链表,带头节点或者不带头节点的链表. 2 本文实现——带头节点的单链表. 3 由于仅仅是学习链表的基本操作,所以在数据字段仅仅设置一个字段:   由于仅仅是学习基本操作,不涉及复杂的算法思想,所以不会很难,主要以代码为主,附上必要的解释即可. 二.具体实现 整体分析:带有头节点的单链表的操作很方便,主要体现在插入和删除时不需要判断是否是第一个元素. 1) 头文件定义如下: 1 #ifn

动态单链表的传统存储方式和10种常见操作-C语言实现

顺序线性表的优点:方便存取(随机的),特点是物理位置和逻辑为主都是连续的(相邻).但是也有不足,比如:前面的插入和删除算法,需要移动大量元素,浪费时间,那么链式线性表 (简称链表) 就能解决这个问题. 一般链表的存储方法 一组物理位置任意的存储单元来存放线性表的数据元素,当然物理位置可以连续,也可以不连续,或者离散的分配到内存中的任意位置上都是可以的.故链表的逻辑顺序和物理顺序不一定一样. 因为,链表的逻辑关系和物理关系没有必然联系,那么表示数据元素之间的逻辑映象就要使用指针,每一个存储数据元素