#include <iostream>
#include <stdio.h>
#include <string.h>
#include <stack>
#include <conio.h>
using namespace std;
typedef struct student
{
    int data;
    struct student *next;
}node;
node *create()
{
node *head, *p, *s;
int x, cycle = 1;
head = (node*)malloc(sizeof(node));
p = head;
while (cycle)
{
    printf("\n input data:");
    scanf("%d", &x);
    if(x != 0)
    {
        s = (node*)malloc(sizeof(node));
    s->data = x;
    p->next = s;
    p = s;
    }
    else cycle = 0;
}
head = head->next;
p->next = NULL;
printf("\n  yyy  %d",head->data);
return(head);
}
int length(node *head)
    {
        int n = 0;
        node *p;
        p=head;
        while(p != 0)
            {
                p = p->next;
                n++;
            }
        return(n);
    }
void print(node *head)
    {
        node *p;
        int n;
        n = length(head);
        printf("noe the %d number are:\n",n);
        p = head;
        if(head !=NULL)
            while (p != NULL)
            {
                printf("\n  uuu  %d",p->data);
                p = p->next;
            }
    }
void printBack(node *head)
    {
        node *p;
        p = head;
        if (p != NULL)
            {
            if(p->next != NULL)
                {
                    printBack(p->next);
                }
            printf("%d\t",p->data);
            }
    }
void print2Back(node *head)
{
    stack<node*>nodes;
    node *p = head;
    while(p != NULL)
    {
        nodes.push(p);
        p = p->next;
    }
    while(!nodes.empty())
    {
        p = nodes.top();
        printf("%d/t",p->data);
        nodes.pop();
    }
}
node *del(node *head,int num)
    {
        node *p = head,*p0;
        while(p->data!=num && p->next!=NULL)
        {
            p0=p;
            p=p->next;
        }
        if(num==p->data)
        {
            if(p==head)
                {
                    head=p->next;
                    free(p);
                }else 
                {
                    p0->next=p->next;
                }
        }
        else
        printf("not found");
    return(head);
    }
node *insert(node *head, int num)
{
    node *p0, *p1, *p2;
    p1 = head;
    p0 = new node;
    p0->data = num;
    while(p0->data > p1->data && p1->next != NULL)
        {
            p2 = p1;
            p1 = p1->next;
        }
    if(p0->data <= p1->data)
        {
            if(p1==head)
            {
                p1 = p0->next;
                head=p0;
            }else
            {
                p2->next = p0;
                p0->next = p1;
            }
        }
    else
        {
            p2->next = p0;
            p0->next = NULL;
        }
    return(head);
}
node *sort(node *head,int num)
    {
        node *p1, *p2, *p3;
        int temp, n = num;

        if(head == NULL && head->next == NULL)
            return head;
        p1 = head;
        for(int i =0; i< n; ++i)
            {
                p1 = head;
                for(int j=0; j<n-i; ++j)
                    {
                        if(p1->data > p1->next->data)
                        {
                            temp = p1->data;
                            p1->data = p1->next->data;
                            p1->next->data = temp;
                        }
                        p1 = p1->next;
                    }
            }

        return (head);

    }
int main()
{
    node *head,stud;
    int n,del_num, insert_num;
    head=create();
    cout<<"\nInt : ";
    cin>>del_num;
    head = del(head, del_num);
    print(head);
    cout<<"\n please input the insert data:";
    cin>> insert_num;
    head=insert(head,insert_num);
    print(head);
    cout<<"sort of num ;"<<endl;
    /*head = sort(head,length(head));
    print(head);
*/
    return 0;

}
posted on 2015-10-23 17:57  gyearth  阅读(182)  评论(0编辑  收藏  举报