昨天更新了顺序表,今天是单链表
下面是代码,如果有错请见谅!!!
/////////////////////////////////// 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);
}
简短但是应该能满足考试的需求了!!!