c语言实现简单环形链表,c语言实现简单链表 - 阿豪boy的个人空间 - OSCHINA - 中文开源技术交流社区...

#include

#include

#define ElemType int

typedef struct{

ElemType e;

struct Node *next;

} Node,*pNode;//pNode是二级指针

int getElemNum(Node *head);

Node* getLastElem(Node *head);

void appendElem(pNode *head,ElemType e);

void showLink(Node *head);

int main(int argc, char *argv[])

{

Node *head=NULL,*p;

showLink(head);

appendElem(&head,10);

appendElem(&head,99);

appendElem(&head,22);

appendElem(&head,100);

showLink(head);

return 0;

}

//得到链表节点个数

int getElemNum(Node *head){

if(!head) return 0;

Node *p=head;

int i=0;

while(p){

p=p->next;

i++;

}

return i;

}

//得到链表尾节点

Node* getLastElem(Node *head){

if(!head) return NULL;

Node *p=head;

while(p->next) p=p->next;

return p;

}

//在链表尾部加入新节点

void appendElem(pNode *head,ElemType e){

Node *node,*p;

node=(Node*)malloc(sizeof(Node));//构造新节点

node->e=e;

node->next=NULL;

//头指针为空,使用二级指针改变头指针指向新的节点

if(!(*head)){

pNode *temp=head;

*temp = node;

return;

}

//如果头指针不为空,将尾指针的next指向新的node

p=getLastElem(*head);

p->next=node;

return;

}

void showLink(Node *head){

Node *p;

p=head;

if(!p){

printf("empty link\n");

return;

}

printf("this link has %d elems\n",getElemNum(head));

while(p){

printf("%d ",p->e);

p=p->next;

}

printf("\n");

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值