粗暴,干就完了----徐晓冬似的C语言自学笔记-----实现一个链表结构

#include <stdio.h>
#include <stdlib.h>
#define N 5;
/*N 假定数组长度为5*/
typedef struct snode
{
    int data;
    struct snode *next; 
} SNODE;

/*第一步,添加链表头信息*/
SNODE *createhead(int a[])
{
    SNODE *h,*p,*q;
/*q为上一节点,p为当前节点*/
    int i;
    q=(SNODE *)malloc(sizeof(SNODE));
    h=q;
    for(i=0;i<5;i++)
     {
       p=(SNODE *)malloc(sizeof(SNODE));
       p->data = a[i];
       q->next=p;
       q=p;
     }
    q->next=0;
    return h;
}

/*第二步打印链表中的元素*/
void showstars(SNODE *h)
{
    SNODE *p;
    p=h->next;
    while(p)
     {
       printf("%d\n",p->data);
       p=p->next;
     }
}


/*第三步删除/回收节点*/
void revokeresource(SNODE *h)
{
    SNODE *p,*q;
    p=h->next;
    while(p)
     {
    q=p->next;
      printf("哦,no~~~%d被回收了\n",p->data);
      free(p);  
      p=q;
     }
   free(h);
}

void main()
{
    int saiwa[5]={1,2,3,4,5};
    SNODE *head;
    head=createhead(saiwa);
    showstars(head);
    revokeresource(head);
}

猜你喜欢

转载自www.cnblogs.com/saintdingspage/p/11231302.html
今日推荐