zoukankan      html  css  js  c++  java
  • 综合本章例9.9(建立链表的函数creat)、例9.10(输出链表的函数print)和本章习题第7题(删除链表中结点的函数del)、第8题(插入结点的函数insert),再编写一个主函数,先后调用这些函数。用以上5个函数组成一个程序,实现链表的建立、输出、删除和插入,在主函数中指定需要删除和插人的结点的数据。

    综合本章例9.9(建立链表的函数creat)、例9.10(输出链表的函数print)和本章习题第7题(删除链表中结点的函数del)、第8题(插入结点的函数insert),再编写一个主函数,先后调用这些函数。用以上5个函数组成一个程序,实现链表的建立、输出、删除和插入,在主函数中指定需要删除和插人的结点的数据。

    #include <stdio.h>
    #include <stdlib.h>
    #define COUNT 5
    typedef struct LNode
    {
    	int num;
    	struct LNode *next;
    } LNode;
    
    LNode* create(int n)
    {
    	LNode *head, *p;
    	head = (LNode *)malloc(sizeof(LNode));
    	p = head; //头节点为0 加上头节点共11个节点
    	head->num = 0;
    	head->next = NULL;
    	for (int i = 1; i <= n; i++)
    	{
    		LNode *newNode = (LNode *)malloc(sizeof(LNode));
    		newNode->num = i;
    		newNode->next = NULL;
    		p->next = newNode;
    		p = p->next;
    	}
    	return head;
    }
    //在指定位置插入数据
    void insert(int n, int positon, LNode *root)
    {
        //首先找到指定位置
    	while (positon--)
    	{
    		root = root->next;
    	}
        //插入新的数据,重新链接插入点的前后节点关系
    	LNode *newNode = (LNode *)malloc(sizeof(LNode));
    	newNode->num = n;
    	newNode->next = root->next;
    	root->next = newNode;
    }
    void del(int n, LNode *root)
    {
    	LNode *pre;
    	while (root->num != n)
    	{
    		pre = root;
    		root = root->next;
    	}
    	pre->next = root->next;
    }
    void printList(LNode *root)
    {
    	printf("----
    ");
    	int i = 0;
    	while (root != NULL)
    	{
    		printf("node %d -> %d
    ", i, root->num);
    		root = root->next;
    		i++;
    	}
    }
    
    int main()
    {
    	int n, position;
    	printf("请输入插入/删除的数,及插入的位置,位置最大为:%d
    ", COUNT);
    	scanf("%d %d", &n, &position);
    	LNode *head = create(COUNT);
    	printList(head->next);
    	insert(n, position, head->next);
    	printList(head->next);
    	del(n, head->next);
    	printList(head->next);
    	return 0;
    }
    
    

    运行截图:

  • 相关阅读:
    jquery json 格式教程
    不修改代码就能优化ASP.NET网站性能的一些方法
    C#操作sqlite数据库使用SQLiteParameter传递参数
    60个开发者不容错过的免费资源库
    Java 与 .NET 的平台发展之争
    “一次编写,随处运行” Intel HTML5技术研讨会
    Struts2 高危漏洞修复方案 (S2-016/S2-017)
    AspNetPager 控件使用
    jQueryUI常用功能实战
    验证码生成类
  • 原文地址:https://www.cnblogs.com/cyuyanchengxu/p/13470516.html
Copyright © 2011-2022 走看看