链表基础程序

来源:互联网 发布:js树状图 饼图插件 编辑:程序博客网 时间:2024/04/28 14:01

链表程序:

(1)链表的建立与删除实例:

// 03_23_seqsearch.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include "iostream"#define MAX 5using namespace std;typedef struct student{int data;struct student* next;}node;
//建立链表node* creat(){node *head, *p, *s;head= (node*)malloc(sizeof(node));p=head;int circle=1, x;while(circle){printf("please input number: \n");scanf("%d",&x);if(x!=0){s=(node*)malloc(sizeof(node));s->data=x;p->next=s;p=s;}elsecircle=0;}head=head->next;p->next=NULL;return head;}
//删除一个元素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);}}elseprintf("no num.");return head;}
//添加一个元素node* add( node* head, int num ){node *p1, *p2, *p;p1=head;p=(node*)malloc(sizeof(node));p->data=num;while( p1->data < p->data && p1->next !=NULL){p2=p1; p1=p1->next;}if( p->data <=p1->data ){if( head==p1 ){p->next=p1;head=p;}else{p=p2->next;p->next=p1;}}else{p1->next=p;p->next=NULL;}return head;}int main(){int num ;node *head, *p;head=creat();p=head;while(p!=NULL){printf("%d\n",p->data);p=p->next;}head=del(head, 2);p=head;cout<<"after cut:\n ";while(p!=NULL){cout<<p->data<<endl;p=p->next;}head=add(head, 1);p=head;cout<<"after add:\n ";while(p!=NULL){cout<<p->data<<endl;p=p->next;}}





0 0