您的位置:首页 > 编程语言 > C语言/C++

线性表的链式存储及相关操作 C语言版

2011-08-30 17:20 204 查看
/*
线性表的链式存储实现及相关操作  C语言版本
作者:Shmily
日期:2011年8月30日
编译环境 VC++6.0
带头结点的单链表,结点的下标从1开始
*/
/**************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
/**************************************************/
#define	OK		1
#define ERROR	0
#define TRUE	1
#define	FALSE	0
typedef	int		Status;
typedef int		ElemType;
/**************************************************/
typedef struct node{
ElemType	data;					//数据域
struct node *next;					//指针域
}Node, *pNode;
/**************************************************/
//创建一个带头结点的空的单链表
pNode CreateListHead(void)
{

pNode L = (pNode)malloc(sizeof(Node));
if (!L)
exit (-1);
L->next = NULL;
return L;
}
/**************************************************/
//输出单链表
void DisLinkList(pNode L)
{
pNode p = L->next;
while (p)
{
printf("%d ", p->data);
p = p->next;
}
}
/**************************************************/
//求单链表的长度
int ListLength(pNode L)
{
pNode p = L->next;
int k=0;
while (p)
{
p = p->next;
++k;
}
return k;
}
/**************************************************/
//取得链表中第pos个结点的值并存入e中
Status GetElem(pNode L, int pos, ElemType *e)
{
pNode p=L->next;
int i=1;

while (p && i<pos)
{
p = p->next;
++i;
}

if (!p || i>pos)
return ERROR;
*e = p->data;
return OK;
}
/**************************************************/
//在链表中的第pos个位置插入一个值为e的结点
Status ListInsert(pNode L, int pos, ElemType e)
{
pNode p = L;
pNode pNew;
int i=1;

while (p && i<pos)
{
p = p->next;
++i;
}

if (!p || i>pos)
return ERROR;

pNew = (pNode)malloc(sizeof(Node));
pNew->data = e;
pNew->next = p->next;
p->next = pNew;
return OK;
}
/**************************************************/
//删除链表L中的第pos个结点并将该结点的值存入e中
Status ListDelete(pNode L, int pos, ElemType *e)
{
pNode p = L;
pNode q;
int i=1;

while (p->next && i<pos)
{
p = p->next;
++i;
}

if (!(p->next) || i>pos)
return ERROR;
q = p->next;
p->next = q->next;
*e = q->data;
free(q);
return OK;
}
/**************************************************/
int main(void)
{
pNode L;
ElemType e;
int pos=7;
L = CreateListHead(L);
return 0;
}
/**************************************************/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: