数据结构单链表

数据结构单链表

定义单链表结构体:

单链表相关的操作:构建,删除,插入,查找等声明放在头文件中

head.h:

head.h
#include<iostream>
using namespace std;
typedef struct LNode
{
	int data;
	struct LNode *next;
	
}LNode,*LinkList;
int ListInsert(LinkList &L,int,int);
int ListDelete(LinkList &L,int,int &);
void CreateList(LinkList &L,int);
void print(LinkList L);
int GetLinkList(LinkList L,int,int&);

insert.cpp中包含插入函数:

#include"head.h"
int ListInsert(LinkList &L,int i,int e)
{
	LinkList p=L;
	int j = 0;
	while(p&&j<i-1)
	{
		p=p->next;
		++j;
	
	}//寻找第i-1个节点
	if(!p||j>i-1) return 0;
	
		LinkList s = (LinkList)malloc(sizeof(LNode));
		s->data=e;
		s->next=p->next;
		p->next=s;
		return 1;
	
	



}

cout.cpp包含将单链表输出函数:


#include"head.h"
void print(LinkList L)
{
	cout<<"现在单链表是:\n";
LinkList p;
p=(LinkList)malloc(sizeof(LNode));	 
		p->next=L->next;
	 while(p->next!=NULL)
	 {
		
	
		p=p->next;
			cout<<p->data<<" ";
		
		
	 
	 }


}

Create.cpp中包含了头插法插入构建单链表函数:

#include"head.h"
void CreateList(LinkList &L,int n)
{
	cout<<"请输入元素:"<<endl;

	L=(LinkList)malloc(sizeof(LNode));
	L->next=NULL;
	for(int i=n;i>0;--i)
	{
		LinkList p=(LinkList)malloc(sizeof(LNode));//生成新节点
		cin>>p->data;
		p->next=L->next;
		L->next=p;

	
	
	}


}

Delete.cpp

中包含了单链表元素删除函数:

#include"head.h"
int ListDelete(LinkList &L,int i,int &c)
{
	LinkList p=L;
	int j=0;
	while(p->next&&j<i-1)
	{
		p=p->next;
		++j;
	
	}//寻找第i个节点,并令p指向其趋势
	if(!p->next||j>i-1)
	{
		return 0;
	
	}
	LinkList q=p->next;
	p->next=q->next;
	c=q->data;
	
		free(q);//删除并释放结点
		return 1;

}

GetLinkList.cpp中包含了查找单链表某个位置元素的函数:

#include"head.h"
int GetLinkList(LinkList L,int i,int &c)
{
	LinkList p;
	p=L->next;
	int j=1;
	while(p&&j<i)
	{
		p=p->next;
		++j;
	
	}
	if(!p||j>i)
		return 0;
	c=p->data;
	return 1;


}

Main.cpp中包含了main函数:

#include"head.h"
int main()
{
	LinkList L;
	int c=0;
	
	int n;
	cout<<"请输入您想创建的单链表的元素个数:\n";
	cin>>n;
	 CreateList(L,n);
		print(L);
	 int i,e;
	 cout<<"请输入您想插入的位置:\n";
	 cin>>i;
	 cout<<"请输入您要插入的元素:\n";
	 cin>>e;
	  ListInsert(L,i,e);
	  
	  print(L);
	  int g;

	  cout<<"请输入您要删除的位置:\n";
		cin>>g;
		
	  ListDelete(L,g,c);
	  cout<<"您刚才的数据为:"<<c<<endl;
	  print(L);
		int ii;
		cout<<"请输入您要查询的位置:\n";
		cin>>ii;
	   GetLinkList( L,ii,c);//在主函数中不能够去访问局部函数中的变量,值是随机的
		   cout<<"您查找的位置的数据为:"<<c<<endl;

return 0;

WorkSpace FileView:




  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值