单向链表实现以及通过栈来实现数据的打印

来源:互联网 发布:医院网站源码 编辑:程序博客网 时间:2024/06/06 06:44

程序仅供参考

链表由一个一个的节点组成:
typedef struct node
{
int data;
struct node* next;
}Node,*pnode;

栈的声明:
typedef struct stack
{
int *array;
int index;
}Stack,*pstack;

1:节点的建立

pnode create_node(int data){    pnode p = (pnode)malloc(sizeof(Node));    if(p == NULL)//安全检查    {        return NULL;    }    else    {        p->data = data;        p->next = NULL;    }    return p;}2、在末尾插入节点void inset_tail(pnode *phead,int data)//实参应传指针的地址,因为一开始是没有节点的,head=NULL,插入后头节点的值需要改变;void inset_tail(pnode *phead,int data){    pnode p = *phead;    if(*phead == NULL)    {        *phead = create_node(data);    }    else    {        while(p->next != NULL)        {            p = p->next;        }        p1 = create_node(data);        p->next = p1;    }}3、找到节点pnode list_find_node(pnode head,int dat){    while(head != NULL)    {        if(head->data == data)        {            return head;        }        else        {            head = head->next;        }    }    return NULL;}4、(1)在中间插入节点pnode temp;temp = p->next;p->next = pnew;pnew->next = temp;(2)在末尾插入节点(p之后)p->next = pnew;(3)在头部插入节点(head)pnode temp = head;pnew->next = temp;head = pnew;用栈来实现数据的打印void list_print_zhan(pnode head){    pstack p = (pstack)malloc(sizeof(Stack));    p->array = malloc(20*sizeof(int));    p->index = 0;    while(head != NULL)    {        p->array[p->index] = head->data;        head = head->next;        p->index++;    }    while(index>=0)    {        printf("%d ",p->array[p->index]);        p->index--;    }}
0 0
原创粉丝点击