單鏈表的一些操作函式(參考自 程杰---《大話資料結構》):
巨集定義:
#define ok 1
#define error 0
typedef int elemtype;
typedef int status;
結構體:(線性單鏈表儲存結構)
typedef struct node
node;
typedef struct node *linklist;
函式宣告部分:
status listinsert(linklist *l,int i,elemtype e);
status createlisthead(linklist *l,int n);
status createlisttail(linklist *l,int n);
status listdelete(linklist *l,int i,elemtype *e);
status getelem(linklist l,int i,elemtype *e);
int locateelem(linklist l,elemtype e);
int listlength(linklist l);
status printlist(linklist l);
bool listisempty(linklist l);
status clearlist(linklist *l);
插入資料:
status listinsert(linklist *l,int i,elemtype e)
if(!p || j>i)
s = (linklist)malloc(sizeof(node));
s->data = e;
s->next = p->next;
p->next = s;
return ok;
}
整表建立,頭插法:
status createlisthead(linklist *l,int n)
}
整表建立,尾插法:
status createlisttail(linklist *l,int n)
r->next = null;
}
查詢元素:
status getelem(linklist l,int i,elemtype *e)
if(!p || j>i)
return error;
*e = p->data;
return ok;
}
查詢元素位置:
int locateelem(linklist l,elemtype e)
return 0;
}
列印鍊錶:
status printlist(linklist l)
return ok;
}
刪除節點位置i的資料,並返回資料e
status listdelete(linklist *l,int i,elemtype *e)
if(!(p->next) || j>i)
return error;
q = p->next;
p->next = q->next;
*e = q->data;
free(q);
return ok;
}
是否為空:
bool listisempty(linklist l)
獲取長度:
int listlength(linklist l)
return j;
}
清空鍊錶:
status clearlist(linklist *l)
(*l)->next = null;
return ok;
}
主函式:(可略過不看)
int main()
else if (i==2)
else if(i==3)
else
break;
case 2:
printf("請輸入要插入資料的 位置 和 值 【以空格間隔】:\n");
scanf("%d",&i);
scanf("%d",&data);
if(listinsert(&l,i,data))
printf("資料【%d】插入成功!\n",data);
else
printf("插入失敗,位置不存在!\n");
break;
case 3:
printf("請輸入要刪除資料的 位置:\n");
scanf("%d",&i);
if(listdelete(&l,i,&e))
else
break;
case 4:
printf("請輸入要查詢資料的值:\n");
scanf("%d",&e);
i = locateelem(l,e);
if(i!=0)
printf("資料%d的當前位置為【%d】\n",e,i);
else
printf("查無此資料!\n");
break;
case 5:
i = listlength(l);
printf("當前鍊錶長度為【%d】\n",i);
break;
case 6:
printlist(l);
break;
case 7:
if (clearlist(&l))
else
break;
}printf("\n");
printf("------------------------\n");
printf("1.建立鍊錶\n");
printf("2.插入資料\n");
printf("3.刪除資料\n");
printf("4.查詢資料位置\n");
printf("5.檢視表長度\n");
printf("6.列印表資料\n");
printf("7.全部清空\n");
printf("0.退出程式\n");
printf("------------------------\n");
scanf("%d",&i);
}system("pause");
return 0;
}
C 資料結構 單鏈表
c 實現 首先,構造乙個單鏈表的節點類 class link 然後是以這個節點類為基礎,建立單鏈錶類 這裡簡單實現了單鏈表的兩個功能新增和輸出 class linklist if head.next null else if head.next null 列印全部資料 public void pri...
c 資料結構單鏈表
鍊錶定義 typedef struct linklistlinklist,linknode linklist 表示頭結點,linknode 表示節點linklist head linknode node 鍊錶初始化 bool linkinit linklist l l next null l dat...
C 資料結構 單鏈表
單鏈表的實現 include using namespace std template typename t struct node template typename t class linklist template typename t linklist linklist template t...