sclist.h
#ifndef __sclist_h__
#define __sclist_h__
#include
#include
#include
typedef int elemtype;
typedef struct node node,*pnode;
typedef struct list list;
void initsclist(list *list);//初始化迴圈單鏈表
void push_back(list *list, elemtype x);//在迴圈單鏈表的末尾插入元素
void push_front(list *list, elemtype x);//在迴圈單鏈表的頭部插入元素
void show_list(list *list);//列印迴圈單鏈表
void pop_back(list *list);//刪除迴圈單鏈表的最後乙個元素
void pop_front(list *list);//刪除迴圈單鏈表的第乙個元素
void insert_val(list *list, elemtype val);//將資料元素插入到迴圈單鏈表中(要求此時迴圈單鏈表中的資料元素順序排列)
node* find(list *list, elemtype x);//查詢迴圈單鏈表中資料值為x的結點
int length(list *list);//求迴圈單鏈表的長度
void delete_val(list *list, elemtype x);//按值刪除迴圈單鏈表中的某個資料元素
void sort(list *list);//對迴圈單鏈表進行排序
void reverse(list *list);//逆置迴圈單鏈表
void clear(list *list);//清除迴圈單鏈表
void destroy(list *list);//摧毀迴圈單鏈表
//優化
node* _buynode(elemtype x);//建立結點
#endif
sclist.cpp
#i"sclist.h"
node* _buynode(elemtype x)
void initsclist(list *list)
void push_back(list *list, elemtype x)
void push_front(list *list, elemtype x)
void show_list(list *list)
printf("nul.\n");
}void pop_back(list *list)
void pop_front(list *list)
void insert_val(list *list, elemtype x)
}node* find(list *list, elemtype key)
int length(list *list)
void delete_val(list *list, elemtype x)
if (p == list->last)
pop_back(list);
else
}void sort(list *list)
else
}}void reverse(list *list)
}void clear(list *list)
list->last = list->first;
list->last->next = list->first;
list->size = 0;
}void destroy(list *list)
main.cpp
#include"sclist.h"
void main()
break;
case 2:
printf("請輸入要插入的資料(-1結束):>");
while (scanf("%d", &item), item != -1)
break;
case 3:
show_list(&mylist);
break;
case 4:
pop_back(&mylist);
break;
case 5:
pop_front(&mylist);
break;
case 6:
printf("請輸入要插入的資料:>");
scanf("%d", &item);
insert_val(&mylist, item);
break;
case 7:
printf("請輸入要查詢的資料:>");
scanf("%d", &item);
p = find(&mylist, item);
if (p == null)
printf("要查詢的資料在單鏈表中不存在!\n");
break;
case 8:
printf("單鏈表的長度為%d\n", length(&mylist));
break;
case 9:
printf("請輸入要刪除的值:>");
scanf("%d", &item);
delete_val(&mylist, item);
break;
case 10:
sort(&mylist);
break;
case 11:
reverse(&mylist);
break;
case 12:
clear(&mylist);
break;
//case 13:
//destroy(&mylist);
//break;
default:
printf("選擇錯誤,請重新選擇!\n");
break;
}} destroy(&mylist);
}本文標題: c語言實現的迴圈單鏈表功能示例
本文位址:
c語言實現單鏈表
一 使用簡介 使用c語言實現了單鏈表的基本操作,共有四個檔案,兩個標頭檔案是常用的,後兩個分別是主函式,和對鍊錶的基本操作函式,倒入時候,須將四個檔案放在同乙個目錄下。二 心得 在書寫過程中,主要錯誤集中在指標的使用上,通過此次程式設計,對於指標的認識更加深刻,頭結點的存在,更大意義上是為了簡化指標...
C語言實現單鏈表
單鏈表可以說是基礎,有利於對指標的使用 結點 typedef int datatype typedef struct slistnode slistnode 實現的函式的宣告如下 slistnode buynode datatype x void printslist slistnode phead...
C語言實現單鏈表
dev c 編譯執行通過,實現了單鏈表的構建,清空,插入,刪除和查詢。include include include include include define ok 1 define error 0 typedef int elemtype typedef struct node node ty...