资源简介
C与语言实现链表的创建、插入(头插法、尾插法)、遍历、查找、删除操作
代码片段和文件信息
#include
#include
/*定义结构体*/
typedef struct stu{
int num;
struct stu *next;
}STU*PSTU;
/*遍历链表的实现*/
void show(PSTU head)
{
if(head == NULL){
printf(“There is no data!\n“);
}
else{
/*当前结点部位空时,打印信息*/
for(; head != NULL; head = head->next){
printf(“%d -> “head->num);
}
printf(“NULL\n“);
}
}
/*创建链表函数的实现*/
PSTU Create(PSTU head)
{
int n = 0;
PSTU tail = NULL; /*定义尾指针并初始化为空*/
printf(“You should input the numbersand you can input ‘-1‘ to stop create link_table!\n“);
while(1){
PSTU new = (PSTU)malloc(sizeof(STU));
printf(“Please input the number: “);
scanf(“%d“&n);
if(n == -1){
free(new);
printf(“create over!\n“);
return head;
}
new->num = n;
new->next = NULL;
if(head == NULL){ /*当头结点为空时,当前结点设为头结点,并使tail指针指向头结点*/
head = new;
tail = new;
}
else{ /*当不是头结点时,在尾部插入数据*/
tail->next = new;
tail = new;
}
}
return head;
}
/*头插法插入数据 的实现*/
PSTU Insert_from_head(PSTU head)
{
PSTU new = (PSTU)malloc(sizeof(STU));
int n = 0;
printf(“Please input the insert number n = “);
scanf(“%d“&n);
new->num = n;
new->next = NULL;
if(head == NULL){
head = new;
}
else{
new->next = head->next;
head->next = new;
}
return head;
}
/*尾插法插入数据 的实现*/
PSTU Insert_from_tail(PSTU head)
{
PSTU tail = NULL;
PSTU new = (PSTU)malloc(sizeof(STU));
int n = 0;
printf(“Please input the insert number n = “);
scanf(“%d“&n);
new->num = n;
new->next = NULL;
if(head == NULL){
head = new;
}
else{
tail = head;
/*将尾指针指向最后一个结点*/
for(; tail->next != NULL; tail = tail->next);
tail->next = new;
}
return head;
}
/*查找函数的实现*/
void Find(PSTU head)
{
PSTU ptr = NULL;
int n = 0;
printf(“Please input the number you will find: “);
scanf(“%d“&n);
if(head == NULL){
printf(“There is no data!\n“);
}
else{
ptr = head;
/*当当前结点的数据与查找的数据不相符时移向下一个结点*/
for(; (ptr->num != n) && (ptr != NULL); ptr = ptr->next);
if(ptr == NULL){
printf(“Can‘t find !\n“);
}
else{
printf(“find!\nThe number is :%d\n“ptr->num);
}
}
}
/*删除结点函数的实现*/
PSTU Delete(PSTU head)
{
PSTU ptr = NULL;
PSTU pf = NULL;
int n = 0;
printf(“Please input the number you will delete :“);
scanf(“%d“&n);
if(head == NULL){
printf(“There is no data!\n“);
}
else{
ptr = head;
for(; (ptr->num != n) && (ptr != NULL); ptr = ptr->next){
pf = ptr;
}
if(ptr == NULL){
printf(“The number is no in the link_table !\n“);
}
else{
pf->next = ptr->next;
free(ptr);
}
}
printf(“now The link_table is :“);
show(head);
return head;
}
int main(void)
{
PSTU head = NULL;
int choose = 0;
/*简易的菜单*/
while(1){
printf(“\t\t-----------------Menu-------------------\n“);
printf(“\t\t-------------- 1. Create ------------ \n“);
printf(“\t\t-------------- 2. Insert from head -- \n“);
printf(“\t\t-------------- 3. Insert from tail -- \n“);
printf(“\t\t-------------- 4. Find -------------- \n“);
printf(“\t\t-------------- 5. Delte ------------- \n“);
printf(“
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2013-09-13 16:39 链表操作\
文件 4199 2013-09-13 16:38 链表操作\li
- 上一篇:VxWorks串口编程代码
- 下一篇:c++编写的简单的汇编器
相关资源
- 数据结构十字链表C++
- 用数组和链表方法实现约瑟夫环
- c语言通讯录链表文件读写
- 使用双向链表实现快速排序,C语言
- 链表实现多项式加法和乘法C语言实现
- C++编写的简单仓库管理系统
- c语言链表的项目用链表实现的字典
- c++字典列表
- 双向循环链表解决约瑟夫环问题
- 个人账户管理系统修改版C语言版
- C语言实现链表通讯录
- Q1077615.zip C++读文件创建链表问题
- hashtable-C语言版折叠法+单链表
- 单链表及文件操作 从txt文件中读取数
- 从txt文件中读取数据并自动建立单链
- c++链表队列的实现
- 孩子兄弟链表法表示二叉树C++
- 链表学生管理系统-数据结构
- 学生信息管理系统c语言单链表实现
- 编写算法删除单链表L中所有值为e的数
- 数据结构C语言 一元多项式的加减法
- 数据机构课设--链表
- C语言下用单链表实现一元多项式的四
- 泛型链表——C语言实现
- 邻接矩阵和邻接链表的克鲁斯卡尔算
- 杂志订阅系统,链表完成
- 操作系统使用C语言链表实现进程管理
- C++,链表,通讯录系统
- 用C语言实现异质链表
- 已知head为单链表的表头指针,链表中
评论
共有 条评论