链表的基本操作--包子
2010-07-01 15:52
369 查看
// 链表.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <iostream>
using namespace std;
#define elemtype char //定义链表中的数据类型,自己可以改
//定义链表节点类型
typedef struct node
{
elemtype data;
struct node *next;
}node,*linklist;
//链表的初始化即一个头结点
int initlist_L(linklist &L)
{
L=(node*)malloc(sizeof(node)); //向系统申请一个头结点
if(L==NULL)
return 0;
L->next =NULL;
return 1; //初始化成功
}
//从单链表中获取第i个元素
int GetElem_L(linklist L, int i, elemtype& e)
{
linklist p;
int j;
p=L->next ; //初始化,p指向第一个节点
j=1;
while(p&&j<i) //顺时针查找,知道找到p,或p为空
{
p=p->next ;
++j;
}
if(!p||j>i) //第i个元素不存在
{
cout<<"i值不合法"<<endl;
return 0;
}
e=p->data ;
cout<<"成功!";
return 1;
}
//插入节点
int ListInsert_L(linklist &L, int i, elemtype e)
{
linklist p,s;
int j;
p=L;
j=0;
while(p&&j<i-1) //寻找第i-1个节点
{
p=p->next ;
++j;
}
if(!p||j<i-1)
{
cout<<"i值错误!"<<endl;
return 0;
}
linklist f;
f=(linklist)malloc(sizeof(node));
f->data =e;
f->next =p->next ;
p->next =f;
cout<<"插入成功!"<<endl;
return 1;
}
//删除链表的节点
int ListDelete_L(linklist &L, int i, elemtype &e)
{
linklist p,q;
int j;
p=L;
j=0;
while(p->next &&j<i-1)
{
p=p->next ;
++j;
}
if(!(p->next )||j>i-1)
{
cout<<"i值非法"<<endl;
q=p->next ;
e=q->data ;
p->next =q->next ;
delete(q);
cout<<"删除成功"<<endl;
return 1;
}
}
//创建新的单链表
void CreateList_L(linklist &L,int n)
{
linklist p;
int i;
L=(linklist)malloc(sizeof(node));
L->next =NULL;
scanf(&p->data );
p->next =p;
}
int main()
{
return 0;
}
//
#include "stdafx.h"
#include <iostream>
using namespace std;
#define elemtype char //定义链表中的数据类型,自己可以改
//定义链表节点类型
typedef struct node
{
elemtype data;
struct node *next;
}node,*linklist;
//链表的初始化即一个头结点
int initlist_L(linklist &L)
{
L=(node*)malloc(sizeof(node)); //向系统申请一个头结点
if(L==NULL)
return 0;
L->next =NULL;
return 1; //初始化成功
}
//从单链表中获取第i个元素
int GetElem_L(linklist L, int i, elemtype& e)
{
linklist p;
int j;
p=L->next ; //初始化,p指向第一个节点
j=1;
while(p&&j<i) //顺时针查找,知道找到p,或p为空
{
p=p->next ;
++j;
}
if(!p||j>i) //第i个元素不存在
{
cout<<"i值不合法"<<endl;
return 0;
}
e=p->data ;
cout<<"成功!";
return 1;
}
//插入节点
int ListInsert_L(linklist &L, int i, elemtype e)
{
linklist p,s;
int j;
p=L;
j=0;
while(p&&j<i-1) //寻找第i-1个节点
{
p=p->next ;
++j;
}
if(!p||j<i-1)
{
cout<<"i值错误!"<<endl;
return 0;
}
linklist f;
f=(linklist)malloc(sizeof(node));
f->data =e;
f->next =p->next ;
p->next =f;
cout<<"插入成功!"<<endl;
return 1;
}
//删除链表的节点
int ListDelete_L(linklist &L, int i, elemtype &e)
{
linklist p,q;
int j;
p=L;
j=0;
while(p->next &&j<i-1)
{
p=p->next ;
++j;
}
if(!(p->next )||j>i-1)
{
cout<<"i值非法"<<endl;
q=p->next ;
e=q->data ;
p->next =q->next ;
delete(q);
cout<<"删除成功"<<endl;
return 1;
}
}
//创建新的单链表
void CreateList_L(linklist &L,int n)
{
linklist p;
int i;
L=(linklist)malloc(sizeof(node));
L->next =NULL;
scanf(&p->data );
p->next =p;
}
int main()
{
return 0;
}