单链表

昨天更新了顺序表,今天是单链表

下面是代码,如果有错请见谅!!!


///////////////////////////////////     head.h    ////////////////////////////////
#include <iostream>
using namespace std;

struct node 
{
char data; //这里的data的类型由你来确定
node *next;
};

typedef node* linkList;


///创建一个单链表,随便插入n个元素
void CreateLinkList( linkList &L , int n )
{
linkList p;

L=( linkList )malloc( sizeof(node) ); //建立一个带头结点的链表
L->next=NULL;

for( int i=0 ; i<n ; i++ )
{
p=( linkList ) malloc ( sizeof(node) ); //创建新的结点
cout<<"请输入结点的内容:";
cin>>p->data;

p->next=L->next; //连接起来(头插法:每个新的结点都会放到头结点的下一个位置上)
L->next=p;
}
}

void ShowLinkList( linkList L)
{
linkList p;
p=L->next ; //p指向的是第一个结点,所以是=L->next
while( p )
{
cout<<p->data<<"    ";
p=p->next; //记得这里要让p指向下一个结点,不然会死循环
}
cout<<endl;
}


///在i号位置上插新的元素
bool  Insert( linkList &L, int i)
{
linkList p , s ;
int j=0;
p=L;
while(p && j<i-1 ) //一直寻找到第i-1个位置
{
p=p->next;
j++;
}
if( !p || j>i-1 )
{
return false; //做一个简单的判断
}
s=( linkList ) malloc ( sizeof(node) ); //弄一个新的节点插进去
cout<<"请输入插入元素的内容:";
cin>>s->data;
s->next=p->next; //插在第i个位置,连接起来就行了
p->next=s;
return true;
}


///删除第i个元素
bool Delete( linkList &L , int i )
{
linkList p ,  q ;
int j=0;
p=L;
while( p && j<i-1 ) //同样的这里要不断的寻找,知道第i-1的位置
{
p=p->next;
j++;
}
if( !p || j>i-1 )
{
return false ;
}
q=p->next;
p->next=q->next;
free(q);
return true;
}

////////////////////////////////      main.cpp   /////////////////////////////////
#include "head.h"

void ShowLinkList( linkList L);
void CreateLinkList( linkList &L , int n );
bool  Insert( linkList &L, int i);
bool Delete( linkList &L , int i );


void main()
{
linkList L;
CreateLinkList(L,4);
ShowLinkList(L);
Insert(L,3); ///////在第三个位置插入
ShowLinkList(L);
Delete(L,3);   //////这里我也让他删除第三个
ShowLinkList(L);
}


简短但是应该能满足考试的需求了!!!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值