#2
我是大懒虫2013-04-07 23:53
typedef int ElemType;
typedef struct LNode { ElemType data; struct LNode *next; }LNode,*LinkList; //初始化 bool InitList_L(LinkList &L) { L=new LNode; L->next=NULL; return 0; } //按序号查找 bool GetElem_L(LinkList L,int i,ElemType &e) { LinkList p; p=L->next; int j=1; while(p&&j<i) { p=p->next; ++j; } if(!p||j>i) return false; e=p->data; cout<<e<<endl; return 0; } //按值查找 LNode *LocateElem_L(LinkList L,ElemType e) { int i=1; LinkList p; p=L->next; while(p&&p->data!=e) { p=p->next; ++i; } cout<<i<<endl; return p; } //插入 bool InitInsert_L(LinkList &L,int i,ElemType e) { LinkList p; p=L;int j=0; while(p&&j<i-1) { p=p->next; ++j; } if(!p||j>i-1) return false; LinkList s; s=new LNode; s->data=e; s->next=p->next; p->next=s; return 0; } //删除 bool ListDetele_L(LinkList &L,int i,ElemType e) { LinkList p; p=L;int j=0; while(p&&j<i-1) { p=p->next; ++j; } if(!p||j>i-1) return false; LinkList q; q=p->next; p->next=q->next; e=q->data; delete q; return 0; } //前插法创建新链表 void CreateList_F(LinkList &L,int n) { L=new LNode; L->next=NULL; for(int i=n;i>0;i--) { LinkList p; p=new LNode; p->next=L->next; cout<<"请输入数据"<<endl; cin>>p->data; L->next=p; } } //后插法创建新链表 void CreateList_L(LinkList &L,int n) { L=new LNode; L->next=NULL; LinkList r; r=L; for(int i=0;i<n;++i) { LinkList p; p=new LNode; cout<<"请输入数据"<<endl; cin>>p->data; p->next=NULL; r->next=p; r=p; } } void put(LinkList L,int n) { LinkList p; p=L->next; for(int i=0;i<n;i++) { cout<<p->data; cout << ' '; p = p -> next; } cout<<endl; } int main(int argc, char* argv[]) { LinkList t; InitList_L(t); // CreateList_F(t,5);//前插法创建新链表 // put(t,5); CreateList_L(t,5);//后插法创建新链表 put(t,5); ElemType q; GetElem_L(t,2,q); LocateElem_L(t,3); InitInsert_L(t,3,6); put(t,6); ListDetele_L(t,3,6); put(t,5); return 0; } 我是菜鸟,粗略地写了一些,接口不是很标准,还有测试函数太水,不过希望对你有用 |
数据结构单链的程序(含clearlist ,getelem ,listdelete ,listinsert)以及主函数怎么写?例如
#include <iostream.h>
#include "stdlib.h"
#include "stdio.h"
#include "malloc.h"
#define OK 1
#define ERROR -2
#define OVERFLOW -1
typedef int ElemType;
typedef int status;
typedef struct LNode
{
ElemType data;
struct LNode *next;
}LNode, *Linklist
Status ClearList(&L)
{
}
Status GetElem_L(Linklist L,int i,Elemtype &e)
{
struct LNode *p = NULL;
p=L->next;j=1;
while(p&&j<1)
{
p=p->next;++j;
}
if(!p||j>i) return ERROR;
e=p->data; return OK;
}GetElem_L
Status ListInsert_L(Linklist &L,int i,ElemType e)
{
p=L;j=0;
while(p&&j<i-1){p=p->next;++j;}
if(!p||j>i-1) return ERROR;
s=(Linklist) malloc (sizeof(LNode));
s->data=e;s->next=p->next;
p->next=s;
return Ok;
}ListInsert_L
Status ListDelete_L(LinkList &L,int i,ElemType &e)
{
p=L;j=0;
while(p->next&&j<i-1)
{
p=p->next;
++j;
}
if(!(p->next)||j>i-1) return ERROR;
q=p->next; p->next=q->next;
e=q->data;
free(q);
return OK;
}ListDelete_L
int main()
{
LinkList L;
int i,p,q,s;
L.GetELem()
cout>>endl;
L.ListInsert()
cout>>endl;
L.ListDelete()
cout>>endl;
}