#include<stdio.h>
#include<stdlib.h>
#define OK 1
#define ERROP -1
#define OVERFLOW 0
typedef int ElemType;
typedef struct Node{ /*聲明一個結點的結構體*/
struct Node *next;
ElemType data;
int length;
}Lnode,*Linklist;
/***************************函數聲明****************/
void CreatLinkList(Linklist &L,ElemType n);
int GetElem(Linklist &L,ElemType n);
int Destroylink(Linklist &L ,int i,int &e);
/******************主函數入口***********************/
int main()
{ int elem;
Linklist link,l;
CreatLinkList(link, 5);
elem=GetElem(link,3);
printf("獲得的第三個數是%d\n",elem);
return 0;
}
/**********函數的實現***************/
void CreatLinkList(Linklist &L,ElemType n) /*創建鏈表*/
{
L=(Linklist)malloc(sizeof(Lnode));
L->next=NULL;
for(int i=n;i>0;--i)
{ Linklist p;
p=(Linklist)malloc(sizeof(Lnode));
printf("請輸入你的數:\n");
scanf("%d/n",&p->data);
p->next=L->next;L->next=p;
}
L->length=n;
}
int GetElem(Linklist &L,ElemType n) /*得到鏈表的第n個元素*/
{ int e;
Linklist m;
if(!L)return ERROP; /*判斷所給鏈表是否爲空*/
m=L->next; /*讓指針指向鏈表的頭指針*/
for(int i=0;i<=n;i++)
{
m=m->next;
}
e=m->data;
return e;
}
int Destroylink(Linklist &L ,int i,int &e) /*銷燬鏈表*/
{
Linklist p,q;
p=L; int j=0;
while(p->next && j<i-1)
p=p->next;++j;
if(!p->next || j>i-1) return ERROP;
q=p->next;p->next=q->next;free(q);
e=p->data;
return OK;
}
/***************************************/