C语言新手小白的学习笔记-------------目前持续更新中
本人90后电气工程及其自动化大学生,大二开始接触C语言,写过前端,Python,但是都不精通,通过许多认识后明白了自身的许多不足,因此,想通过博客与大家分享我的学习过程和认识,如果有哪位大佬有更好的意见和认识,请你们一定要积极留言,如果有错误的地方,请大家能第一时间帮我指出,谢谢各位了,大家一起进步,每天进步一点点,加油,热爱技术的各位。
第二期 双向链表的基本操作
这里首先给出双向链表的代码(大部分根据单向链表来改动的),具体代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#define LEN 15
typedef struct Node{
/*创建双向链表数据结构*/
int data;
struct Node *next; /*定义双向链表的指向下一个结点*/
struct Node *before; /*定义双向链表的指向上一个结点*/
}Node;
void createBlinklist(Node *head,int len){
/*创建新的双向链表*/
int i; /*循环次数*/
Node *h=head; /*头指针*/
for(i=0;i<len;i++){
Node *p=(Node *)malloc(sizeof(Node)); /*为新建结点分配动态空间*/
p->next=NULL; /*初始化新建结点的指针指向*/
p->before=NULL; /*初始化新建结点的指针指向*/
scanf("%d",&p->data); /*为结点数据域输入数据*/
h->next=p; /*将头指针指向p*/
p->before=h; /*将p的上一个结点指向h*/
p->next=h->next->next; /*将p的下一个结点指向头结点的下一个结点*/
h=p; /*将头指针指向新建结点*/
}
}
int posordertreaveBlinklist(Node *head){
/*正序遍历链表*/
Node *p=head->next; /*定义头结点*/
int len=1; /*定义链表位置*/
while(p!=NULL){
/*头结点不为NULL*/
printf("%d\t",p->data); /*输出数据域*/
p=p->next