数据结构单链表
定义单链表结构体:
单链表相关的操作:构建,删除,插入,查找等声明放在头文件中
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: