君太平:这事儿咋整?:有人帮忙写简单程序吗?

来源:百度文库 编辑:高校问答 时间:2024/04/29 10:46:58
数据结构的简单程序:
在单链表中实现插入和删除在VC的环境下编程.
还有如何实现逆置??

#include <stdlib.h>
#define ERROR 0//出错
typedef int Elemtype;//数据类型
/*描述链表结构*/
typedef struct LNode{
Elemtype data;
struct LNode *next;
}LNode,*SLink;

/*创建一个带头结点的空链表,返回L 为指向头结点的指针*/
SLink InitList( ){
SLink L;
L = (SLink) malloc ( sizeof (LNode));
if(!L) exit(1);/* 存储空间分配失败*/
L->next = NULL;
return L;
}/*Intlist*/

/*销毁以L为头指针的单链表,释放链表中所有结点空间*/
void DestroyList( SLink L)
{
SLink p;
while (L)
{
p = L;
L = L->next;
free(p);
} /*while*/
L = NULL;/*虽然头结点占有的空间已经释放,
但指针变量L中的值没有改变,为安全起见,
置L为 "空",以防止对系统空间的访问*/
} /*DestroyList*/
/*若1≤pos≤LengthList(L),则返回指针L指向头结点的单链表
中第 pos 个元素的值,否则ERROR*/
Elemtype GetElem ( SLink L, int pos )
{
SLink p;
int j;
p = L->next; j =1;/*变量初始化,p 指向第一个结点*/
while ( p && j< pos )
{/*顺结点的指针向后查找,直至 p 指到第pos个结点或 p 为空止*/
p = p->next; ++j;
} /*while*/
if ( !p || j>pos ) return (Elemtype)ERROR; /*链表中不存在第 pos 个结点或pos<1 的情况*/
return p->data; /* 取到第 pos 个元素*/
} /* GetElem*/
/*若1≤pos≤LengthList(L)+1,则在指针L指向头结点的
单链表 的第 pos 个元素之前插入新的元素 e,且返回函
数值为 TRUE, 否则不进行插入且返回函数值为 FALSE*/
booll ListInsert ( SLink L, int pos, Elemtype e )
{
SLink p,s;
int j=0;
p=L;
while(p && j<pos-1)
{/* 查找第pos-1个结点,并令指针p指向该结点*/
p=p->next; ++j;
} /* while*/
if(!p||j>pos-1)
return FALSE; /* 参数不合法,pos 小于1或者大于表长+1*/
s = (SLink) malloc ( sizeof (LNode));
if (!s) exit(1); /* 存储空间分配失败*/
s->data=e; /* 创建新元素的结点*/
s->next=p-> next; p->next=s; /*修改指针*/
return TRUE;
} /*ListInsert */
/*若1≤pos≤LengthList(L),则删除指针L指向头
结点的单链表 中第 pos 个元素,返回函数值为
TRUE,否则不进行删除操作且 返回函数值为FALSE*/
booll ListDelete ( SLink L, int pos)
{
SLink p,q;
int j = 0;
p = L;
while (p->next && j < pos-1)
{/* 寻找第pos个结点,并令p指向其前驱,也就是删除p的后驱*/
p = p->next; ++j;
}
if (!(p->next) || j > pos-1)
return FALSE;/*删除位置不合理*/
q = p->next; p->next = q->next;/*修改指针*/
free(q);/*释放结点空间 */
return TRUE;
}/*ListDelete_L*/
把上面的代码在C++上初步实验:
#include <iostream.h>
void main()
{ SLink hh=InitList( );
hh->data=24;//建的空表head也有数据域,不过这里算法不使用head的数据域
hh->next =InitList( );
ListInsert (hh, 1, 25 );
cout<<hh->data <<":"<<hh->next ->data;//输出24:25
cout<<"\n"<<GetElem (hh,1);//输出25
}

靠!
学数据结构的连这个都不会就赶紧跳楼去吧!
自己想!!!!!

哥们你行啊 是不是学计算机的啊 老师是姓王还是周啊!!

It's just like what you learned from the book(c)