C单链表的操作
来源:互联网 发布:网络推广的岗位职责 编辑:程序博客网 时间:2024/06/05 04:34
单链表的创建、删除结点、插入新结点、遍历但链表。很多不足之处,希望多多提意见改正:
1、链表
1) 单链表的创建
首先创建一个节点,将头结点、q临时节点、创建节点p。都指向这个节点。
接下来循环创建链表的每个节点,为了实现人机交互,最好在创建每个节点的时候都询问是否创建节点,创建下一个单独节点结束之后。然后让q的下一个节点指向p这样就建立起了中间链接,然后让q指向p节点。这样依次循环,就创建好了一个单链表。
具体的代码:
struct student *creat_line(void){ struct student *head; struct student *p; struct student *q; char c[2]; int num; num = 0; p=(struct student*)malloc(sizeof(struct student)); if(p!=NULL){ scanf("%s%d", p->name, &p->num); } printf("do you want to creat y/n\n"); scanf("%s", c); num++; head = p; q = p; do{ p = p->next; p=(struct student*)malloc(sizeof(struct student)); if(p!=NULL){ scanf("%s%d", p->name, &p->num); } printf("do you want to creat y/n\n"); scanf("%s", c); num++; q->next = p; q = p; }while(c[0]=='y'); p = NULL; return head;}
2) 链表节点的删除
在各种笔试题目中最常见的就是链表节点的删除,其实觉得和很奇怪,为什么总是喜欢考这个呢,感觉好像期末考试一样。
删除节点,其实要分是不是删除头结点的问题,如果是删除头节点,那就直接将头节点的下一个节点视为头节点,然后删除头节点就可以了。
如果不是删除头节点,就先锁定需要删除的节点的前一个节点q,然后将q->next指向p->nextj然后删除p节点。
p->next=q->next;delete q;
具体程序如下:
struct student *delete_point(struct student *head, int del_num) { struct student *p; struct student *q; p = head; if(del_num==head->num){ head = head->next; }else{ while(p!=NULL){ if((p->next)->num==del_num){ q = p->next; p->next = q->next; free(q); break; } p = p->next; } } return head; }
New需要删除,如果是malloc就直接free就可以了。
3) 遍历链表
首先是一个节点指向头节点,然后依次指向下一个节点
void view_line(struct student *head) { struct student *p; p = head; while(p!=NULL){ printf("%s %d\n", p->name, p->num); p = p->next; } }
4) 链表节点的插入
插入节点,分在前面插入和在后面插入,这里只是做了在指定节点后面插入新的节点。
先产生一个节点,让新产生的节点指向指定节点的下一个节点,建立连接,然后使得指定节点指向新建的节点,这样就连接起来了,是不是很简单呢!
struct student *insert_point(struct student *head, int insertnum){ struct student *p; struct student *q; p = (struct student *)malloc(sizeof(struct student )); scanf("%s%d", p->name, &p->num); q = head; while(q!=NULL){ if(q->num==insertnum){ q->next = p->next; q->next = p; break; } q = q->next; } return head;}
源代码下载:http://download.csdn.net/detail/u012789847/9063209
0 0
- 单链表的操作(C#)
- C单链表的操作
- 单链表的操作C语言版
- 【C++】单链表的基本操作
- C语言实现单链表的各种操作
- C 链表(单链表的操作)
- c语言单链表的基本操作(代码)
- c语言单链表的各种操作<未完>
- C实现单链表的基本操作笔记
- C语言 单链表的基本操作
- c语言 之 单链表 的 基本操作
- C语言实现单链表的基本操作
- C/C++单链表的一些操作
- 【C++/数据结构】单链表的基本操作
- 单链表的操作(C语言实现)
- C语言单链表的基本操作
- 单链表的基本操作c语言实现
- C语言实现单链表的基本操作
- 弹出窗口之Cookie控制
- 简单几何 CF Gym 100338B Geometry Problem:
- Struts1与Struts2的那些事
- 软工视频总结Part Two
- POJ-3337 Expression Evaluator-表达式求值
- C单链表的操作
- ScheduleFactory
- oc Block / NSComparisonResult排序 / 字面量
- 【LeetCode】(242)Valid Anagram(Easy)
- 【洛谷】P1089 津津的储蓄计划
- windows编程之进程通信:内存共享
- js 不同页面间传递值并取值
- ios学习之旅---oc面向对象的特点
- cmd下使用命令制作U盘启动盘