資料結構與演算法 單鏈表程式練習

2021-08-18 22:08:19 字數 2484 閱讀 8673

#include #define error 0

#define ok 1

#define elemtype int

typedef int status;

typedef struct node

node;

typedef struct node* linklist;

/*遍歷鍊錶元素並列印*/

status visitlist(linklist l)

printf("鍊錶長度為:%d\n",j);

return ok;

}/*獲取鍊錶長度*/

int listlength(linklist l)

return i;

}/*使用尾插法建立長度為n的鍊錶*/

status createlisttail(linklist *l,int n)

r->next=null;

visitlist(*l);

return ok;

}/*使用快慢指標法求得鍊錶中間值*/

status listlinkmid(linklist l,elemtype *e)

else

} mid=mid->next;

*e=mid->data;

return ok;

}/*---獲取鍊錶第i個元素----*/

/*其中1<=i<=listlength(l)*/

status getelem(linklist l,int i,elemtype *e)

while(jnext;

j++;

} *e=p->data;

return ok;

}/*---在鍊錶第i個元素之前插入值e----*/

/*-----其中1<=i<=listlength(l)----*/

status listinsert(linklist *l,int i,elemtype e)

for(j=1;jnext;

}

s=(linklist)malloc(sizeof(node));

s->data=e;

s->next=p->next;

p->next=s;

return ok;

}/*----------刪除鍊錶第i個元素------*/

/*-----其中1<=i<=listlength(l)----*/

status listdelete(linklist *l,int i)

for(j=1;jnext;

}

q=p->next;

p->next=q->next;

free(q);

return ok;

} /*------------鍊錶整表刪除---------*/

/*-----其中1<=i<=listlength(l)----*/

status clearlist(linklist *l)

(*l)->next = null ;

return ok;

} int main()

else

printf("error\n");

break;

case 3: cmr=listlinkmid(l,&e);

if(cmr)

else

printf("error\n");

break;

case 4: printf("請輸入查詢元素:");

scanf("%d",&n);

cmr=getelem(l,n,&e);

if(cmr)

else

printf("error\n");

break;

case 5:printf("請輸入位置和元素:");

scanf("%d,%d",&n,&e);

cmr=listinsert(&l,n,e);

if(cmr)

else

printf("error\n");

break;

case 6: printf("請輸入刪除元素:");

scanf("%d",&n);

cmr=listdelete(&l,n);

if(cmr)

else

printf("error\n");

break;

case 7: cmr=clearlist(&l);

if(cmr)

printf("ok\n");

else

printf("error\n");

break;

default:printf("輸入有誤\n");

break; }

} return 0;

}

單鏈表(演算法與資料結構)

鍊錶 單鏈表 為每個結點新增1個指標域,每個結點包括兩個域 資料域 存放元素本身資訊 指標域 存放後繼結點的儲存位置 指向鍊錶中第乙個結點的指標,稱為這個鍊錶的頭指標。最後乙個元素的指標不指向任何結點,稱為空指標,圖示中用 表示,在演算法中用 null 表示 帶頭結點的單鏈表 頭結點 可以不存資訊,...

資料結構與演算法 單鏈表

鍊錶是有序的列表,但是它在記憶體中是儲存如下 鍊錶是以節點的方式來儲存的 鍊錶的各個節點不一定是連續儲存的 鍊錶分帶頭結點的鍊錶和不帶頭結點的鍊錶 新增先建立乙個 head 頭結點,作用就是表示單鏈表的頭 後面我們每新增乙個結點,就直接加入到鍊錶的最後 遍歷 通過乙個輔助變數,幫助來遍歷整個鍊錶 第...

資料結構與演算法 單鏈表

單鏈表的建立 1.建立乙個head頭節點,作用就是表示單鏈表的頭 2.後面我們每新增乙個節點,就直接加入鍊錶的最後 定義heronode,每個heronode物件就是乙個節點 class heronode 為了顯示方法,重新tostring public string tostring 定義sing...