C语言数据结构 如何建立单向循环链表并且输入值

C语言数据结构 如何建立单向循环链表并且输入值,第1张

#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

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

#include <iostream.h>

#include <stdio.h>

#include <stdlib.h>

typedef struct node

{

int date

struct node *next

}slnode,*Linklist

void creat_list(Linklist H)//创建链表,由于实参传值使L指向了一个空节点兆弊段从而成为头节点指针

{  

Linklist p, p1

int n

cout<<"请输入结点数"<<endl

cin>>n

H->date=n

cout<<"请输入结点数据"<<endl

p1 = H//使p1具有了空间

for(int i=0i<ni++)

{

p=(Linklist)malloc(sizeof(slnode))

p->next = NULL

cin>>p->date

H->next = p

H=p//L指族誉向了最后节点的数据域

}

H=p1//使尾指针指向了最后节点的数据域

}

void display_list(Linklist H)//输出链表

{

cout<卜烂<"输出"<<endl

Linklist p

p = H->next

for(int i=0i<H->datei++)

{

cout<<p->date

cout <<' 'cout<<'\n'

p = p ->next

}

}

void main()

{

slnode a//a是空结构变量

Linklist p//p是指针

p = &a//p指向了一个空节点

creat_list(p)//传的是结构变量的地址

display_list(p)

}


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存