?? 數(shù)據(jù)結(jié)構(gòu)一單鏈表實現(xiàn).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) /*初始化操作函數(shù)定義*/
{ L=(LinkList)malloc(sizeof(struct Lnode));
if(!L) return(OVERFLOW);
L->next=NULL;
return OK;
}
Status ListInsert_l(LinkList &L,int i,ElemType e) /*插入操作函數(shù)定義*/
{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) /*輸出操作函數(shù)定義*/
{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);
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -