• 综合本章例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;
    }
    
    

    运行截图:

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

  • 相关阅读:
    Office 2007 打开 C# VS2005 导出的Excel时报错:单元格数据太大 Office 2003打开正常 的解决办法
    【30篇突击 android】源码统计 十四
    Android加载对话框,异步执行代码的封装类
    android 图片设置圆角
    【30篇突击 android】源码统计 十二
    android 制作的精美闹钟
    读WP8开发新书,送Windows Phone 8开发书籍
    各种曲线图表。矩形 圆形,股票
    【30篇突击 android】源码统计 十三
    日历程序,支持添加日程提醒
  • 原文地址:https://www.cnblogs.com/weiyidedaan/p/13331320.html
Copyright © 2020-2023  润新知