链表的创建和相关操作(Linux下Vim编制)
来源:互联网 发布:达内软件培训费用 编辑:程序博客网 时间:2024/05/18 21:06
/*******************************************************************> File Name: LinkList.c > Author: guoxiaoming > Mail: wuxinliulei@gmail.com > Created Time: 2014年03月23日 星期日 01时05分31秒 ************************************************************************/#include<stdio.h>#include<stdlib.h>//采用头插法建立具有head节点的单链表typedef struct node{ int data; struct node * next;}LinkList;LinkList * head;LinkList * creatLinkList(){int data;LinkList *head, *p;head = (LinkList *)malloc(sizeof(LinkList));head->next = NULL;printf("请输入数据直到输入0结束:\n");scanf("%d",&data);while(data != 0){p = (LinkList *)malloc(sizeof(LinkList));p->data = data;p->next = head->next;head->next = p;scanf("%d",&data);}return head;}//打印函数void printLinkList(LinkList *head){LinkList *q = head->next;while(q!= NULL){printf("%d ",q->data);q = q->next;}}//插入数据到指定结点后面 int insertLinkList(LinkList * head,int goal, int data){LinkList * q = head->next;while(q->data != goal && q->next != NULL){q = q->next;}if(q->next == NULL){return 0;}else{LinkList * temp;temp = (LinkList *)malloc(sizeof(LinkList));temp->data = data;temp->next = q->next;q->next = temp;return 1;}}int deleteLinkList(LinkList *head,int data){LinkList *q = head->next;LinkList *p = head; while(q != NULL){if(data == q->data){break;}p = p->next;q = q->next;}if(q == NULL) return 0;else{//显然要删除q节点p->next = q->next;free(q);return 1;}}void usage(){printf("\n\n请输入您要做的选择:\n1:创建链表\n2:打印链表\n3:插入数据到指定节点\n4:删除数据\n5:结束程序\n");}int main(){ LinkList * head; int choice; usage(); scanf("%d",&choice); while(1){ if(1 == choice) { head = creatLinkList(); usage(); scanf("%d",&choice); continue; } else if(2 == choice) { printLinkList(head); usage(); scanf("%d",&choice); continue; } else if(3 == choice) { printf("插入前的数据:\n"); printLinkList(head); printf("\n请依次输入要插入的数据和插入的指定节点:"); int goal,data; scanf("%d %d",&data,&goal); int result = insertLinkList(head,goal,data); if(result){ printf("插入成功!\n"); printLinkList(head); }else{ printf("插入失败!你输入的节点不存在!"); } usage(); scanf("%d",&choice); } else if(4 == choice){ int data; printf("删除前的数据:\n"); printLinkList(head); printf("\n"); printf("请输入要删除的数据:"); scanf("%d",&data); int result = deleteLinkList(head,data); if(result){ printf("删除成功!\n"); printLinkList(head); }else{ printf("删除失败!不存在你要删除的节点!"); } usage(); scanf("%d",&choice); } else if(5 == choice) { break; } }; return 0;}
0 0
- 链表的创建和相关操作(Linux下Vim编制)
- linux下创建新用户和相关操作
- Linux下用户创建和组创建相关的命令
- Linux下创建svn以及相关操作
- 双向链表的创建和相关操作
- 双向链表的创建和相关操作
- linux下的相关操作
- linux 下 vim 操作
- linux下vim操作
- Linux 下 Vim 的快捷操作总结
- linux下的基本操作07(vim)
- mysql 创建数据库和表的相关操作
- vim相关(linux)
- Linux下的目录及其操作命令(二、创建和删除目录的命令)
- Linux自学笔记(九)常用命令之Vim相关操作
- 4.08,linux初学:基本的linux操作和vim操作
- Linux客户端下的LaTex相关操作
- linux下的mysql相关操作
- hdu 2159 FATE 笔记
- Oracle安装错误ora-00922
- 非模态对话框
- Objective_C中常见的集合类
- oracle 排序-合并联结
- 链表的创建和相关操作(Linux下Vim编制)
- UILabel上展示不同颜色的文字(NSAttributedString)
- Container With Most Water
- 最近敲代码有感
- 心灵日志2014.03.31之嘲笑理想
- Junit3.X 初学 (四) 如何测试类的静态Static方法
- 第四周作业
- 关于用Java写的贪吃蛇游戏的一些感想
- 【判断奇偶】#4 A. Watermelon