线性表转换为带头节点的循环链表

考研终于结束了,该开始写写代码了。昨晚居然把c++后缀名搞成".c++"了,真是醉了。

#include<stdio.h>
#include<malloc.h>

typedef struct node{
 int data;
 struct node* next;
}CNode,*CList;
void printList(CList);
void converse(CList *lst,int a[],int N)
{
 CNode *p,*q;
 int i;
 p=*lst;
 p->data=a[0];
 p->next=p;  //插入第一个节点
 for(i=1;i<N;i++)
 {
  q=(CNode*)malloc(sizeof(CNode));
  q->data=a[i];
  q->next=p->next;
  p->next=q;
  p=q;
 }
}

void printList(CList lst)
{
 CNode *p=lst;
 do
 {
  printf("%3d",p->data);
  p=p->next;
 }while(p!=lst);
}
int main(void)
{
 CList lst;
 int arr[]={2,4,5,1,3};
 lst=(CList)malloc(sizeof(CList));
 converse(&lst,arr,5);
 printList(lst);
 return 0;
}

你可能感兴趣的:(c/c++)