精华内容
下载资源
问答
  • 创建单链表并输出单链表

    千次阅读 2020-07-19 11:36:43
    创建一个单链表并输出单链表 ①基本思路: 定义一个结构体,包含数据域和指针域,前者为该结点保存的用户数据,后者为该结点保存的下一个相邻结点的地址。 定义一个结点创建函数(返回head),用head指向第一个结点、...

    创建一个单链表并输出单链表

    ①基本思路:

    • 定义一个结构体,包含数据域和指针域,前者为该结点保存的用户数据,后者为该结点保存的下一个相邻结点的地址。
    • 定义一个结点创建函数(返回head),用head指向第一个结点、p1开辟新节点、p2连接新节点。
    • 定义一个结点输出函数,用do…while形式依次打印出每一个结构体成员数据域。
    • 在main()函数中,依次调用上述函数。

    ②源代码:

    /* 创建一个单链表,每个结点包含三个元素,学生编号、分数、保存下一个节点地址的指针 */
    #include <stdio.h>
    #include <stdlib.h>
    
    #define len sizeof(struct Student)//每个结点所占用存储空间大小
    struct Student
    {
    	long num;
    	float score;
    	struct Student * next;//保存下一个相邻结点的地址
    };
    
    int n;//用于记录结点个数
    
    /*获取单链表头指针*/
    struct Student *creat()
    {
    	/*head指向头结点,并作为最后函数返回值。*/
    	/*p1负责开辟新结点(永远指向新结点)*/
    	/*p2负责链接下一个相邻结点,即p2的next成员指向后面的p1(指向最后一个结点)*/
    	struct Student *head,*p1,*p2;
    	n=0;
    	p1=p2=(struct Student *)malloc(len);//开辟第一个结点,p1和p2都指向该结点
    	printf("Enter the num and the score please:\n");
    	scanf("%ld,%f",&p1->num,&p1->score);//输入第一个学生的编号和成绩 
    	head=NULL;
    	while(p1->num!=0)//新开辟的结点中,p1->num成员数据不是0,则一直循环
    	{
    		n=n+1;
    		if(n==1)head=p1;//只有一个结点,确定头指针
    		else p2->next=p1;//有多个结点,使第一个结点的next指向第二个结点的地址
    		p2=p1;//p2指向最后一个结点,为开辟下一个结点做准备
    		p1=(struct Student *)malloc(len);//开辟下一个结点
    		scanf("%ld,%f",&p1->num,&p1->score);//输入其它学生的编号和成绩 
    	}
    	p2->next=NULL;
    	return(head);
    }
    
    /*输出单链表*/
    void print(struct Student *head)
    {
    	struct Student *p;
    	printf("\nThese %d nodes are:\n",n);
    	p=head;
    	do
    	{
    		printf("%ld,%f\n",p->num,p->score);//输出头结点数据 
    		p=p->next;//依次输出其它结点数据 
    	}while(p!=NULL);//p=NULL表明已到表尾,退出循环
     } 
    
    void main()
    {
    	struct Student * head;
    	head=creat();//返回头指针 
    	print(head);//从头指针所指向结点开始,依次打印出其它结点数据
    }
    

    ③运行结果:
    在这里插入图片描述

    展开全文
  • 该楼层疑似违规已被系统折叠隐藏此楼查看此楼#include #include struct node{int num;struct node *next;};void main(){struct node *create();void print();struct node *head;head=NULL;head=create(head);...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

    #include

    #include

    struct node

    {

    int num;

    struct node *next;

    };

    void main()

    {

    struct node *create();

    void print();

    struct node *head;

    head=NULL;

    head=create(head);

    print(head);

    }

    struct node *create(struct node *head)

    {

    struct node *p1,*p2;

    p1=p2=(* struct node)malloc(sizeof(struct node));

    scanf("%d",&p1->num);

    p1->next=NULL;

    while(p1->num!=-999)

    {

    if(head==NULL)

    head=p1;

    else p2->next=p1;

    p2=p1;

    p1=(struct node *)malloc(sizeof(struct node));

    scanf("%d",&p1->num);

    p1->next=NULL;

    }

    return head;

    }

    void print(struct node *head)

    {

    struct node *temp;

    temp=head;

    while(temp!=NULL)

    {

    printf("%6d",temp->num);

    temp=temp->next;

    }

    }

    各位帮忙看看有什么错误,为什么运行不了?

    展开全文
  • 代码如下,链表是由一个个结点组合组成的,所以创建一个链表的过程也就是一个个添加结点的过程,这篇文章我们先使用头插法,所谓头插法就是先创建一个头结点,而这个头结点下面将会是这个链表的表尾,至于为什么,且...

     代码如下,链表是由一个个结点组合组成的,所以创建一个链表的过程也就是一个个添加结点的过程,这篇文章我们先使用头插法,所谓头插法就是先创建一个头结点,而这个头结点下面将会是这个链表的表尾,至于为什么,且听我细细说来。

          所谓头插法,即创建一个头结点head,而这个头结点指向为空,它的next域为空,以后作为表尾结点。 每次新输入一个num,就插入到头结点的前面,这个结点作为新的表头,于是以此类推,我们最初创建的头结点head最后就变成了表尾结点。

     

    如下:

    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    
    
    typedef struct node *list;
    struct node
    {
        int data;
        list next;
    };
    void printlist(list head);//遍历函数
    void createlist_h(list head,int num);
    list input();
    int main()
    {
        list A = input();
        printlist(A);
        return 0;
    }
    list input()
    {
        list head =(list)malloc(sizeof(struct node));
        head->next = NULL;
        int num;
        while(scanf("%d",&num) ,num)
            createlist_h(head,num);
            return head;
    }
    void createlist_h(list head,int num)
    {
    
    
            list p  = (list)malloc(sizeof(struct node));
    
            p->data = num;
            p->next = head->next;
            head->next = p;
    
    
    }
    void printlist(list head)
    {
        list p = head->next;
        while(p)
        {
            printf("%d ",p->data);
            p = p->next;
        }
    
    }
    

     

    展开全文
  • 创建一个带头结点的单链表打印输出链表的值 分析:首先要搞清楚什么是头结点,正常情况下一个单链表是不带头结点的。为了对单链表插入或删除操作的方便,特意引入了头结点。头结点指向链表中第一个结点。 如图...

    1.题目要求

    创建一个带头结点的单链表,并打印输出链表的值

    分析:首先要搞清楚什么是头结点,正常情况下一个单链表是不带头结点的。为了对单链表插入或删除操作的方便,特意引入了头结点。头结点指向链表中第一个结点。
    在这里插入图片描述
    如图所示,展示了“不带头结点的单链表”和“带头结点的单链表”。两者比较,“带头结点的单链表”实际上就在“不带头结点的单链表”前增加了一个结点。这个可以有数据域(比如存储表长等),也可以数据域中不存储东西,但它的指针域一定指向单链表的第一个元素。

    2.代码

    #include<iostream>
    #include<vector>
    using namespace std;
    struct LinkNode {
        int val;
        LinkNode* next;
    };
    LinkNode* CreateLinkList()
    {
        LinkNode* head,*p;
        head = new LinkNode;
        p = head;
        int data;
        while (cin >> data) {
            LinkNode* node = new LinkNode;
            node->val = data;
            p->next = node;
            p = node;
            if (getchar() == '\n')
                break;
        }
        p->next = NULL;
        return head;
    }
    void PrintLinkList(LinkNode* head)
    {
        LinkNode* phead = head->next;
        while (phead != NULL)
        {
            cout << phead->val << " ";
            phead = phead->next;
        }
    }
    int main()
    {
    
        LinkNode* head = CreateLinkList();
        PrintLinkList(head);
        return 0;
    }
    
    

    测试用例:1 2 3 4
    在这里插入图片描述

    展开全文
  • struct Node//创建单链表结构体 { int date; Node *next; }; int list_headinsert(Node **list, int a[], int n); int getlist(Node *list, int i); int main() { int *p, n; cout << "请输入n=...
  • /* 创建一个节点类 */ public class node { int data; /*节点数据域*/ node next = null; /*节点指针域*/ public node(int data){ this.data = data; /*当构造一个新的节点的时候,顺便给节点
  • C语言建立循环单链表并输出

    千次阅读 2018-12-12 12:38:15
    0)整数,建立带表头结点的循环单链表依次输出单链表中的元素值。 提示: 结点结构如下: typedef struct Node {  int data;  struct Node *next; }LNode,*LinkList; 要求: (1)编写函数,从键盘...
  • cout前插法创建单链表输出结果:\n"; Listprint_L(L); break; case 3: //创建单链表(尾插法) CreateList_R(L); cout尾插法创建单链表输出结果:\n"; Listprint_L(L); break; case 4: //单链表的按序号取值 cout请...
  • 输入一个正整数序列,遇负数时停止,建立一个线性链表存储读入的数据,将各个元素按顺序输出。 样例输入 Copy 1 2 3 4 5 -1 样例输出 Copy 1 2 3 4 5 #include <iostream> #include<stdio.h> #include&...
  • 使用头插法建立单链表并输出## 标题 # include<stdio.h> typedef struct node{ int data; struct node *next; } Lnode; Lnode *Head_Insert(){ Lnode *ptemp = NULL; Lnode *HeadNode = NULL; Lnode *p...
  • 请按尾插法创建单链表在指定位置插入元素输出插入完成后的链表输入 输入包括三行 第行输入单链表的长度 第二行输入单链表的元素 第三行输入插入的位置和插入的值 输出 输出插入完成后的单链表,若插入失败,...
  • #include&lt;stdio.h&gt; #include&lt;stdlib.h&gt; typedef struct Node{ int data; struct Node *next;...linklist init_create()//创建一个链表 { linklist L; L=(linklist)...
  • 篇文章主要实现了单链表的基本操作,这篇文章主要讲的是单链表的具体应用 1.单链表的逆序输出 1)递归方式逆序输出链表 #include #include #include #include "mylist.h"//在上篇中有 void PrintList(List ...
  • 数据结构与算法分析——c语言描述 练习3.1 答案 main.c #include"list.h" #include #define N 1208 void printAll(List l) { Position p = Advance(l); while (p) { printf("%d ", Retrieve(p));...int
  • C语言创建一个单链表实现键盘输入数据以及增删查

    千次阅读 多人点赞 2020-10-18 17:14:56
    作为一个编程小白,在这里发表自己的第一篇博客,心里还是有点紧张。写博客的目的主要还是在于让自己对所学的知识进行充分的掌握,企图在写分析的过程当中可以达到“柳暗花明又一村”的境界,当然如果可以帮助到别人...
  • /*---编写打印出一个单链表的所有元素的程序---*/ #include #include struct Node{ int val; struct Node *next; }; Node *findEnd(Node *list){ while(list->next) list = list->next; return list; } v
  • 采用尾插法建立单链表并输出链表

    千次阅读 2020-10-01 18:36:24
    代码如下`` #include<stdio.h> #include<stdlib.h> typedef int DataType; struct Node { DataType data; struct Node* next; }; typedef struct Node *PNode; ... LinkList head =
  • 建立一个单链表

    2018-12-17 21:22:39
    建立一个单链表,在单链表上实现插入、删除和查找等操作,有菜单。 ⑴初始化字符型单链表H; ⑵采用尾插法建立单链表H,如(a,b,c,d,c); ⑶输出单链表H的长度; ⑷输出单链表H的第i个元素,如输出单链表H的第3...
  • 文章目录链表单链表结点Python编写单链表结点单链表的操作Python...链表在大量数据的增加或者删除时处理的就更加得心应手,链表是由无数节点构成,每节点中都存入这数据和下结点的地址 单链表 单链表(单向...
  • C语言创建递增单链表合并成递增单链表

    千次阅读 多人点赞 2020-10-29 14:22:57
    (2)将这两个有序单链表使用两个单链表的原有空间进行合并,合并成一个有序单链表,将生成的有序单链表输出显示。 实现方法 首先定义单链表的结构 typedef struct node{ //单链表的结构定义 int data; //数据域 ...
  • Java创建单链表并直接选择排序输出

    千次阅读 2015-09-28 00:10:49
    写Java也一年左右了,第次用Java写单链表。。。 废话少说,代码如下: import java.util.Scanner; public class Exp1 { public static void main(String[] args) { Node no = addNode(); P(no); P...
  • 单链表元素个数如果为奇数则正常输出中间元素即可,若单链表元素个数为偶数则将两中间元素输出。 代码如下: #include&lt;stdio.h&gt; #include &lt;malloc.h&gt; #include&lt;stdbool....
  • 单链表La和Lb均按值非递减排列,归并为单链表Lc也是按照值非递减排列。 思路: 比较La和Lb中的值,非大的值先插入到Lc中,然后输出检验。 代码如下: 头文件和宏定义(保存为constant.h): #include #include #...
  • 给定一个单链表,反转其中位置 m 到 n 的元素。 说明: 1 ≤ m ≤ n ≤ 链表长度。 输入: 1->2->3->4->5->NULL, m = 1, n = 3 输出: 1->4->3->2->5->NULL 要求空间复杂度为O(1) #...
  • C语言--头插法建立单链表并输出

    千次阅读 2020-03-04 19:13:02
    #include ...//该链表有头节点,首节点为头节点的下一个  while( L ){  printf("%d ",L->data);  L=L->next;  }  } int main(){  L = insert();  print();  return 0; }  
  • 编写一个算法,逐个输出 顺序表 中所有数据元素。设数据元素对的数据类型为int型 题目分析:   要挨个输出顺序表,那咱就得先有一个顺序表才对呀,所以虽然题目中虽然只说输出顺序表中的所有元素,但我们要先...
  • 单链表倒序输出

    千次阅读 2014-03-18 16:34:39
    #include "iostream.h" struct node//定义结点结构类型 {  char data;...//创建链表的函数 void showList(node * head);//遍历链表的函数,参数为表头 node *search(node * head,char keyWord);//查找结
  • (1)键盘输入n,建立长度为n的单链表并输出; (2)键盘输入x。在单链表中查找值为x的结点删除,最后输出链表。
  • 使用结构体定义单链表节点typedef struct Node * pNode;struct Node{int Data;pNode Next;//结构的递归定义 等效于注释代码//struct Node * Next;};主函数#include #define NUM 6 //用于指定数组大小pNode creatList...
  • #include #include struct node //声明结构体类型名 ...//指向下一个结点的指针 }; struct node *create_slist()//建立单链表的函数,返回的是头结点 {  int x;  struct node *head,*s,*r;

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 16,405
精华内容 6,562
关键字:

创建一个单链表并输出元素