栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

函数与动态链表

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

函数与动态链表

请定义链表节点结构linkNode,内含一个int类型的数据和链表指针。

设计形如linkNode *CreateNode(int value)的创建新节点函数、

形如void InsertFirst(linkNode *p)的将新节点插入链表头的函数、

形如void InsertLast(linkNode *p)的将新节点插入链表尾的函数、

形如void DispLink()的遍历链表函数、

形如void FreeLink()的释放链表函数。
       在主函数中输入N个整数,依次调用InsertFirst()、InsertLast()函数将新创建的N个节点插入链表中,然后调用DispLink()遍历链表函数依次输出链表中的数据,最后调用FreeLink()函数释放链表所占内存。

#include
#include              // malloc 所在库

struct LinkNode 
{
	int t;
	struct LinkNode *next;
};

struct LinkNode *CreatNode(int value);              // 创建新节点
struct LinkNode *InsertFirst(struct LinkNode *p);   // 新节点插入链表头
struct LinkNode *InsertLast(struct LinkNode *p);    // 新节点插入链表尾
void DispLink(struct LinkNode *p);                  // 遍历链表函数
void FreeLink(struct LinkNode *p);                  // 释放链表函数


int main()
{
	int N,i,k;
	struct LinkNode *head;

	scanf("%d%d",&N,&k);
    
    head=CreatNode(k);
	
	for (i=0;it=value; p->next=NULL;
    return p;
}


struct LinkNode *InsertFirst(struct LinkNode *head)   // 新节点插入链表头
{
	int m;
	struct LinkNode *p;
	
	scanf("%d",&m);
	
	p=CreatNode(m);
	
	p->next=head;
	
    head=p;
    
    return head;
}


struct LinkNode *InsertLast(struct LinkNode *head)    // 新节点插入链表尾
{
	int m;
	struct LinkNode *p,*p1;
	
	p1=head;
	
	scanf("%d",&m);
	
	p=CreatNode(m);
	
	while(p1->next != NULL)
	  p1=p1->next;
	  
	p1->next=p;	  
	
	return head;
}


void DispLink(struct LinkNode *head)     // 遍历链表函数
{
	struct LinkNode *p;
	
	p=head;
	
	while(p!=NULL)
	  {
	  printf("%d ",p->t);
	  p=p->next;
    }
}


void FreeLink(struct LinkNode *head)    // 释放链表函数
{
	struct LinkNode *p1,*p2;
	
	p1=head;

	while(p2!=NULL)
	  {
	  	p2=p1->next;
	  	free(p1);
	    p1=p2;
	  }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/879605.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号