C和指针 十二章 双链表没有实现
来源:互联网 发布:网络信息安全培训课件 编辑:程序博客网 时间:2024/06/07 10:35
这一章主要讲了链表;
单链表和双链表,由于某些原因,只实现了单链表;双链表等我看到后边数据结构再回来补上去
#include <stdio.h>#include <stdlib.h>//这段代码参考了c和指针以及深入浅出C语言程序设计链表一部分,但是插入元素的那段代码是深入浅出那里的,比较简单typedef struct NODE{ int value; struct NODE *link;} Node;Node *head;//使用数组建立动态链表,先创建头节点,再创建第一个数据节点,并连接到头节点后面,如果再有新数据就再创建节点Node *creatlist( int *a, int n);void outputlist( Node *head);//链表输出void insertlist( Node *head, int x );//插入一个值void deletelist( Node *head, int new_value );int main(){ int a[10]= { 10, 20, 30, 40, 50 }, i; printf("数组初值是 \n"); for( i = 0; i < 5; i++ ) { printf( "%d\t", a[i]); } printf("\n"); head = creatlist( a, 5 ); printf( "使用数组元素创建的动态链表:\n"); outputlist( head ); int x; x=25; insertlist( head, x ); deletelist( head, x ); outputlist( head ); return 0;}Node *creatlist( int *a, int n){ Node *head, *p1, *p2; int i; head = (Node *) malloc( sizeof( Node ) ); if( head == NULL) { printf("没有分配足够内存"); exit(0); } p1 = head; for( i = 0; i < n; i++ ) { p2 = malloc( sizeof( Node ) ); if( p2 == NULL) { printf("没有分配足够内存"); exit(0); } p1->link = p2; p2->value = a[i]; p1 = p2; } p1->link = NULL; return head;}void outputlist( Node *head)//输出链表{ Node *p; p = head->link; printf("head->"); while( p != NULL ) { printf("%d->", p->value); p = p->link; } printf("NULL\n");}void insertlist( Node *head, int new_value ){ Node *current; Node *precious; Node *news; precious = head; current = head->link; while( current != NULL ) { if( current->value < new_value ) { precious = current; current = current->link; } else break; } news =(Node *) malloc( sizeof (Node) ); if (news == NULL) { printf("出错\n"); exit(0); } news->value = new_value; news ->link = current; precious->link = news; outputlist( precious );}void deletelist( Node *head, int new_value ){ Node *current; Node *precious; precious = head; int flag; current = head->link; while( current != NULL ) { if( current->value == new_value ) { flag = 1; break; } precious = current; current = current->link; } if( flag == 1) { precious->link = current->link; } outputlist( precious );}
阅读全文
0 0
- C和指针 十二章 双链表没有实现
- C和指针第七章written_amount C++实现
- C++ 引用变量(十二)-- & b *b和C的传递指针形参一样效果
- 十二、c++指针 一级指针和二级指针
- 【c++】指针和引用实现多态
- C和指针之实现strlen函数
- C和指针(第六章--指针)
- 《C和指针》第六章 指针
- 指针篇之十二 函数指针数组实现跳转表
- c 和 指针 第七章
- c 和 指针 第七章
- C和指针 第二章
- C和指针第二章
- C和指针 第十三章
- C++Primer前十二章的一些笔记和总结
- C和指针第二章--表达式计算器的C语言实现
- 《C和C指针》中转移表的实现
- C-《C和指针》第五章读书笔记
- 【51Nod1454】升排列
- SQL中 group by ....having
- myeclipse中svn配置及连接svn服务器
- Refletion2017.9.5
- 初识caffe2
- C和指针 十二章 双链表没有实现
- 【多校联合】(HDU6043)KazaQ's Socks
- 原码,补码,反码详解:
- CLion最好用的编译器&Xcode
- ThreadPoolExcutor(线程池)
- 表触发器
- OpenCV简单操作-图像腐蚀
- BZOJ 4999: This Problem Is Too Simple!
- Linux基础使用