📄 数据结构一单链表实现.txt
字号:
#include <stdio.h>
#include <malloc.h>
#define ERROR 0
#define OVERFLOW -2
#define TRUE 1
#define OK 1
#define NULL 0
#define FALSE 0
typedef int Status;
typedef int ElemType;
typedef struct Lnode
{ ElemType data;
struct Lnode *next;
}*LinkList;
Status InitList_l(LinkList &L) /*初始化操作函数定义*/
{ L=(LinkList)malloc(sizeof(struct Lnode));
if(!L) return(OVERFLOW);
L->next=NULL;
return OK;
}
Status ListInsert_l(LinkList &L,int i,ElemType e) /*插入操作函数定义*/
{LinkList p,s;
int j;
p=L;j=0;
while(p&&j<i-1) { p=p->next;j++;}
if (!p||j>i-1) return ERROR;
s=(LinkList)malloc(sizeof(struct Lnode));
s->data=e;
s->next=p->next;
p->next=s;
return OK;
}
void ListOutput_l(LinkList L) /*输出操作函数定义*/
{LinkList p;
p=L->next;
while(p)
{ printf("%6d",p->data); p=p->next;}
printf("\n");
}
Status 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) return ERROR;
q=p->next; p->next=q->next;
e=q->data;free(q);
return OK;
}
Status GetElem_l(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) return ERROR;
e=p->data;
return OK;
}
Status ListEmpty_l(LinkList L)
{if (L->next) return TRUE;
else return FALSE;
}
main()
{ int i;
ElemType e;
LinkList La;
InitList_l(La);
for (i=0;i<5;i++) ListInsert_l(La,i+1,3*i);
ListOutput_l(La);
ListInsert_l(La,1,999); ListOutput_l(La);
ListInsert_l(La,4,888); ListOutput_l(La);
GetElem_l(La,5,e);
printf("At 5th is elem: %d\n",e);
ListDelete_l(La,5,e);
GetElem_l(La,5,e);
printf("At 5th is elem: %d\n",e);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -