单链表的基本操作
来源:互联网 发布:西门子840d编程指令 编辑:程序博客网 时间:2024/05/17 21:07
#include <iostream>#include <stdio.h>#include <string.h>#include <conio.h>using namespace std;typedef struct Node{ int data; struct Node *next;}node;//创建单链表node *create(){ node *head,*p,*s; int x,cycle = 1; head = (node*)malloc(sizeof(node)); p = head; while(cycle){ printf("\nplease input the data:"); scanf("%d",&x);if(x!=0){s = (node*)malloc(sizeof(node));s->data = x;printf("\n%d",s->data);p->next = s;p = s;}else{cycle = 0;} }head = head->next;p->next = NULL;print("\n %d ",head->data);return head;}
//单链表测长int length(node *head){int n = 0;node *p;p = head;while(p!=NULL){p = p->next;n++;}return n;}
//单链表打印void print(node *head){node *p;int n;n = length(head);printf("\nNow,These %d records are:\n",n);p = head;if(head!=NULL){while(p!=NULL){printf("\n %d ",p->data);p = p->next;}}}
//单链表删除节点node *del(node *head,int num){node *p1,*p2;p1 = head;while(num!=p1->data && p1->next!=NULL){p2 = p1;p1 = p1->next;}if(num == p1->data){if(p1==head){head = p1->next;free(p1);}else{p2->next = p1->next;free(p1);}}else{printf("\n%d could not been found:,num);}return head;}
//单链表的插入node *insert(node *head,int num){node *p0,*p1.*p2;p1 = head;p0=(node *)malloc(sizeof(node));p0->data = num;while(p0->data>p1->data && p1->next!=NULL){p2=p1;p1=p1->next;}if(p0->data <= p1->data){if(head == p1){p0->next = p1;head = p0;}else{p2->next = p0;p0->next = p1;}}else{p1->next = p0;p0->next = NULL:}return head;}
//单链表的排序node *sort(node *head){node *p,*p2,*p3;int n;int temp;n = length(head);if(head == NULL || head->next == NULL)return head;for(int j =1;j<n;++j){p = head;for(int i = 0;i<n-j;++i){if(p->data>p->next->data){temp = p->data;p->data = p->next->data;p->next->data =temp;}p = p->next;}}return head;}
//单链表的逆置node *reverse(node *head){node *p1.*p2.*p3;if(head == NULL || head->next == NULL)return head;p1= head,p2 = p1->next;while(p2){p3 = p2->next;p2->next = p1;p1 = p2;p2 = p3;}head->next = NULL;head = p1;return head;}
//删除单链表的头元素void removeHead(node* head){node *p;p = head->next;head->next = p->next;free(p);}
//不知道节点N的值,遍历一次得到中间节点void searchmid(node* head,node* mid){node *temp = head;while(head->next->next != NULL){head = head->next->next;temp = temp->next;mid = temp;}}
0 0
- 单链表的基本操作
- 单链表的基本操作
- 单链表的基本操作
- 单链表的基本操作
- 单链表的基本操作
- 单链表的基本操作
- 单链表的基本操作
- 单链表的基本操作!
- 单链表的基本操作
- 单链表的基本操作
- 单链表的基本操作
- 单链表的基本操作
- 单链表的基本操作
- 单链表的基本操作
- 单链表的基本操作
- 单链表的基本操作
- 单链表的基本操作
- 单链表的基本操作
- 开源视频会议BigBlueButton 0.81二次开发API
- EXP
- WPF自定义路由事件
- 并发编程--资源并发访问信号量
- 恨不该打一泰国女生的PP
- 单链表的基本操作
- 藤志萄裙奶绕暗崖辣移丈员燃缸靥
- android notification回传数据(返回数据)
- 自定义字体
- 我开博客了,我的女儿上小学了
- NFS umount 提示 device is busy
- Unable to resolve superclass 解决措施
- hdu 4333(扩展KMP)
- fragment的onCreateOptionMenu()