鏈表的操作

#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;

}

/***************************************/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章