博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
单链表基本操作代码
阅读量:7047 次
发布时间:2019-06-28

本文共 2825 字,大约阅读时间需要 9 分钟。

#include <stdio.h>

#include <stdlib.h>

#include 
#include
typedef struct List{ struct List *next; int data;}List;List *creatList(int *arr, int len){ List *head, *p; List *s; int i; head = (List *)malloc(sizeof(List)); head->next = NULL; p = head; for(i = 0; i < len; i++) { s = (List *)malloc(sizeof(List)); s->data = arr[i]; s->next= p->next; p->next = s; p = s; } p->next = NULL; head = head->next; return head;}//insert node before value.List *insertNodeBefore(List *list, int value){ List *p, *q; List *node; p = list; while(NULL != p && p->data != value) { q = p; p = p->next; } if(NULL == p) { printf("list has nod %d!\n", value); return list; } node = (List *)malloc(sizeof(List)); node->data = 0; node->next = p; q->next = node; return list;}List *deleteNode(List *list, int value){ List *p, *q; p = list; while(NULL != p && p->data != value) { q = p; p = p->next; } if(NULL == p) { printf("list has not %d\n", value); return list; } q->next= p->next; free(p); return list;}List *revList(List *list){ List *p1 = list; List *p2 = list; List *p3 = list; if(NULL == list || NULL == list->next) { printf("list is Null!\n"); return list; } p2 = p1->next; while(NULL != p2) { p3 = p2->next; p2->next = p1; p1 = p2; p2 = p3; } list->next = NULL; list = p1; return list; }void printList(List *list){ if(NULL == list) { printf("list is NULL!\n"); return; } while(NULL != list) { printf("%d\n", list->data); list = list->next; }}void freeList(List *list){ List *head; head = list; while(NULL != head) { list = head->next; free(head); head = list; } free(list);}int main(int argc, char *argv[]){ int arr[] = {
3,5,6,2,8,10}; List *list; list = creatList(arr, 6); printf("=========createList=========\n"); printList(list); printf("=========createList=========\n"); list = insertNodeBefore(list, 8); printf("=========insertNodeList=========\n"); printList(list); printf("=========insertNodeList=========\n"); list = deleteNode(list, 5); printf("=========deleteList=========\n"); printList(list); printf("=========deleteList=========\n"); list = revList(list); printf("=========revList=========\n"); printList(list); printf("=========revList=========\n"); freeList(list); return 0;}

转载于:https://www.cnblogs.com/zhangpengme/archive/2012/10/28/2744127.html

你可能感兴趣的文章
python练习-简单小爬虫
查看>>
python进阶-面向对象编程五:类的内置方法
查看>>
JAVA入门到精通-第52讲-面试题讲评
查看>>
springboot的热部署和dubug
查看>>
Nest.js 守卫
查看>>
再说rocketmq消息存储
查看>>
16年国庆假期期间兼职所悟
查看>>
javaWeb服务详解【客户端调用】(含源代码,测试通过,注释) ——Emp实体类...
查看>>
Spring知识点
查看>>
PHP中array
查看>>
Android经典应用软件大全
查看>>
新浪微博布局学习——妙用TabHost
查看>>
linkin大话设计模式--简单工厂
查看>>
关于腾讯微博之死,离职员工所了解的真相
查看>>
ExtJs之列表(grid)
查看>>
python atexit模块和register函数
查看>>
EL 和 JSTL 的使用
查看>>
ios开发之c语言基础-结构体经典题目
查看>>
win8安装python环境和pip & easy_install工具
查看>>
第一次写博客
查看>>