单链表的建立/测长/打印

#include<iostream>

#include<stdio.h>

#include<string.h>

#include<conio.h>

using namespace std;

typedef struct student

{

int data;

struct student *next;

}node;

node *creat()

{

node *head, *p, *s;

int x, cycle = 1;

head = (node*)malloc(sizeof(node));

p = head;

while (cycle)

{

printf("\n please input the data:");

scanf("%d", &x);

if (x != 0)

{

s = (node*)malloc(sizeof(node));

s->data = x;

printf("\n%d", s->data);

p->next = s;

p = s;

}

else

cycle = 0;

}

head = head->next;

p->next = NULL;

printf("\n  yyy %d", head->data);

return (head);

}

int length(node *head)

{

int n = 0;

node *p;

p = head;

while (p != NULL)

{

p = p->next;

n++;

}

return (n);

}

//单链表打印

void print(node *head)

{

node *p; int n;

n = length(head);

printf("\n Now,These %d records are:\n", n);

p = head;

while (p != NULL)

{

printf("\n uuu  %d  ", p->data);

p = p->next;

}

}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-18 23:39:10

单链表的建立/测长/打印的相关文章

求有环单链表中的环长、环起点、链表长

1.判断单链表是否有环 使用两个slow, fast指针从头开始扫描链表.指针slow 每次走1步,指针fast每次走2步.如果存在环,则指针slow.fast会相遇:如果不存在环,指针fast遇到NULL退出. 就是所谓的追击相遇问题: 2.求有环单链表的环长 在环上相遇后,记录第一次相遇点为Pos,之后指针slow继续每次走1步,fast每次走2步.在下次相遇的时候fast比slow正好又多走了一圈,也就是多走的距离等于环长. 设从第一次相遇到第二次相遇,设slow走了len步,则fast走

单链表的建立与打印

建立单链表,并且从头到尾打印单链表 #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

单链表的建立和增删改查代码及讲解

//---单链表的单链式存储结构---- typedef struct LNode { ElemType data; struct LNode *next; }LNode,*LinkList; //1.初始化 int Initlist(LinkList L) { L=NULL; return OK; } //初始化(带头结点) int Initlist(LinkList L) { L=(LNode*)malloc(sizeof(Lnode));//为头结点分配内存空间 L->next=NULL;

单链表的建立,插入,显示,查找删除以及反转

#include "stdafx.h" #include <iostream> #include <string> #include <stack> //二叉树遍历时使用栈 #include <queue> //二叉树层次遍历时使用 using namespace std; //单链表操作 class Node { public: Node *next; Node *front; //双向链表时指向前驱节点的指针 int data; };

单链表(建立、插入、删除、打印)

单向链表创建 链表是动态分配存储空间的链式存储结构. 其包括一个"头指针"变量,其中第0个结点称为整个链表的头结点,头结点中存放一个地址,该地址指向一个元素,头结点一般不存放具体数据,只是存放第一个结点的地址. 链表中每一个元素称为"结点",每个结点都由两部分组成:存放数据元素的数据域和存储直接后继存储位置的指针域.指针域中存储的即是链表的下一个结点存储位置,是一个指针.多个结点链接成一个链表. 最后一个结点的指针域设置为空(NULL),作为链表的结束标志,表示它没

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,

「C语言」单链表/双向链表的建立/遍历/插入/删除

最近临近期末的C语言课程设计比平时练习作业一下难了不止一个档次,第一次接触到了C语言的框架开发,了解了View(界面层).Service(业务逻辑层).Persistence(持久化层)的分离和耦合,一种面向过程的MVC的感觉. 而这一切的基础就在于对链表的创建.删除.输出.写入文件.从文件读出...... 本篇文章在于巩固链表的基础知识(整理自<C语言程序设计教程--人民邮电出版社>第十章),只对链表的概念及增删改查作出探讨,欢迎指教. 一.链表结构和静态/动态链表 二.单链表的建立与遍历

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

#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

线性表—单链表

.1.链式存储结构实现 单链表和双链表(这边讲单链表). 2.基础概念 a.结点:结点由数据域和地址域(链)两部分组成.而结点整体在效果上可以看作是该结点的地址(指针).这个地址域一般是后继元素的地址(即下一个结点的总体).所以最后一个元素的地址域为^,其表示空,即没有后续元素.b.单链表:每个结点只有一个地址域的线性链表称为单链表.c.双链表:每个结点有两个地址域的线性表链称为双链表,两个地址域分别指向前驱元素和后继元素. 3.单链表的实现 线性表接口LList: package com.cl