如何创建一个循环单链表

如何创建一个循环单链表,第1张

#include<stdio.h>typedef struct node{int num struct node *next}NodeNode *CreateLinkList()Node *CreateCircularLinkList()Node *TailInsert(Node *Head, int k)void poutLinkList(Node *Head)main() { int iNode *Head Head=CreateCircularLinkList() for(i=1i<11i++) Head=TailInsert(Head,i) poutLinkList(Head) }/* create a linklist */Node *CreateLinkList(){ Node *H,*new_node new_node=(Node *)malloc(sizeof(Node)) if(!new_node){ printf("HeadInsert:cannot create a node") return NULL } H=new_nodenew_node->next=NULLnew_node->num=0 return H} /*create a circular linked list*/Node *CreateCircularLinkList(){ Node *H,*new_node new_node=(Node *)malloc(sizeof(Node)) if(!new_node){ printf("HeadInsert:cannot create a node") return NULL } H=new_nodenew_node->next= new_nodenew_node->num=0 return H} /* Insert a new node */孝胡Node *TailInsert(Node *Head, int k){ Node *H,*new_node,*q,*p int i=0 H=Head p=H->next q=H while(p!=H){q=p p=p->next } new_node=(Node *)malloc(sizeof(Node)) if(!new_node){ printf("TailInsert:cannot create a node") return NULL }new_node->隐斗next=q->nextq->next=new_node new_node->num=kreturn H}void poutLinkList(Node *Head){ Node *H,*p H=Head p=Head->next while(p!=H){printf(" %d ->",p->num) p=p->next }} 上面是我写的一段小程序,实现了循环单链灶慎磨表的功能。本程序利用循环建立了一个带头结点的循环单链表,插入了10个结点,输出如下图所示。

#include <iostream>

using namespace std

typedef char ElemType

typedef int Status

#define OK 1

#define ERROR 0

typedef struct Lnode

{

ElemType data

struct Lnode *next

}Lnode,*LinkList

void Creat_List(LinkList L)//创建单链表并输入元素

{

LinkList p,q

q=L

char ch

cout<<"请输入链表元素,并且以输碰塌孙入#表示结束!"<<endl

while(cin>>ch&&ch!='#')

{

p=new Lnode[sizeof(Lnode)]

if(!p)

{

cout<<"获取内存失败"<<endl

exit(ERROR)

}

p->data=ch//尾插法

L->next=p

L=p

}

L->next=q

}

void output_List(LinkList L)//遍历单链表(输出单链表衫漏元素)

{

LinkList p

p=L->next

if(p==L)

{

cout<<"该链表是空链表!"<<endl

exit(ERROR)

}

while(p!=L)

{

cout<<p->data<<"笑链   "

p=p->next

}

}

Status main()

{

LinkList H

H=(LinkList)malloc(sizeof(Lnode))

H->next=NULL//设置头结点为空

    Creat_List(H)

output_List(H)

return 0

}//头结点有和没有都是可以的,头结点只是为了让 *** 作链表更方便,


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12427086.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存