链表的插入和删除

来源:百度知道 编辑:UC知道 时间:2024/05/13 08:32:31
请高手帮我看一下,这个程序有什么问!!!谢谢!!
#include<stdio.h>
typedef int ElemType;
typedef int Status;
typedef struct{
ElemType data;
struct LNode *next;
}LNode;
void InitList(LNode *HL){
HL=NULL;
}
void Output(LNode *HL){
LNode *p=HL;
while(p!=NULL){
printf("%d ",p->data);
p=p->next;
}
}
Status ListInsert(LNode *L,int i,ElemType e){
LNode q,*p=L,*s;
int j=0;
while(p&&j<i-1){p=p->next;++j;}
if(!p||j>i-1)return 0;
s=(LNode*)malloc(sizeof(LNode));
s->data=e;s->next=p->next;
p->next=s;
return 1;
}
Status ListDelete(LNode *L,int i,ElemType *e){
LNode *p=L,*q;
int j=0;
while(p->next&&j<i-1){p=p->next;++j;}
if(!(p->next)||j>i-1)return 0;

参考一下这个

#include<iostream.h>
#include<malloc.h>
#include<conio.h>
#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10
#define ERROR 0
#define OK 1

typedef int ElemType;

struct LNODE
{
ElemType data;
struct LNODE *next;
};

typedef struct LNODE LNode;
typedef struct LNODE *LinkList;

//初始化单链表
int init(LinkList &L)
{
L=(LNode *)malloc(sizeof(LNode));
if(!L) return(ERROR);
L->next=NULL;
return OK;
}/*init */

//求表长
int ListLength(LinkList L)
{
int j=0;
while (L->next)
{
L=L->next;
j++;
}
return j;
}

//获取表中第i个元素的值
int GetElem(LinkList L,int i,ElemType &e)
{
LinkList p; int j;
p=L->next;j=1;
while(p&&j<i)
{
p=p->next;++j;
}
if(!p||j>i) retur