您的位置:首页 > 其它

单链表几种操作

2010-10-29 01:00 225 查看
代码

/*
purpose:实现链表的几种操作
*/
#include "stdio.h"
#include "stdlib.h"
#include "malloc.h"

struct SNode
{
int ivalue;
struct SNode* next;
};

/************************************************************************/
/*   Tail insert   */
/************************************************************************/
SNode* createLinkList()
{
SNode* head,*s,*p;
int ix;
char ch;
head=(SNode*)malloc(sizeof(struct SNode));
if(NULL==head)
exit(1);
head->next=NULL;
p=head;
while (scanf_s("%d",&ix)==1)
{
s=(SNode*)malloc(sizeof(struct SNode));
if(NULL==s)
exit(1);
s->ivalue=ix;
p->next=s;
p=s;
}
p->next=NULL;  //No loop
//p->next=head;      //Loop linklist
return head;
}

/************************************************************************/
/* print                                                                     */
/************************************************************************/
void printLinkList(SNode* pNode)
{
if(NULL==pNode)
exit(1);
SNode* p;
p=pNode->next;
//while (p!=pNode)  //Loop
while(p!=NULL)        //No loop
{
printf("%d ",p->ivalue);
p=p->next;
}
printf("\n");
}

/************************************************************************/
/* IsLoop                                                                     */
/************************************************************************/
bool IsLoop(SNode* pNode)
{
SNode* p=pNode;
SNode* q=pNode;
while (q!=NULL && q->next!=NULL)
{
p=p->next;
q=q->next->next;
if (p==q)
return true;
}
return false;
}

int main()
{
SNode* sNode;
sNode=createLinkList();
printLinkList(sNode);
bool im=IsLoop(sNode);
if(im)
printf("true\n");
else
printf("false\n");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: