有关链表。。。。C程序。。VC调试

有关链表。。。。C程序。。VC调试,第1张

下面是正确的代码和运行结果,希望对你有所帮助:)

代码:

#include <stdioh>

#include <stdlibh>

typedef struct Node

{

int data;

struct Node next;

} Node, LinkList;

void create(LinkList head)

{

LinkList h = head;

Node n;

head = (LinkList)malloc(sizeof(Node));

(head)->data = -1;

(head)->next = NULL;

int d;

scanf("%d", &d);

while (d != -1)

{

n = (Node )malloc(sizeof(Node));

n->data = d;

n->next = head;

head = n;

scanf("%d", &d);

}

}

void Print(LinkList head)

{

Node p = head;

if (p == NULL || p->next == NULL)

return;

do

{

printf("%d\n", p->data);

p = p->next;

} while (p->next != NULL);

}

int main(void)

{

LinkList head = NULL;

create(&head);

Print(head);

return 0;

}

运行结果:

10 20 30 40 50 60 70 -1

70

60

50

40

30

20

10

#include<stdlibh>

#include "nodedefh"

#define CreateLinklistWay 1   // 0表示头插法创建链表,1表示尾插法创建链表

#if !CreateLinklistWay

/

 函数名称:linklist CreateLinklistHead()

 函数功能:利用头插法创建链表

 参    数:无

 返 回 值:创建完链表后的链表头结点

 说    明:无

/

extern linklist CreateLinklistHead()

{

int x, i, nodeNum;

linklist head, temp;  // 头结点与临时结点

head = (linklist )malloc(sizeof(linklist));  // 生成表头结点

head->next = NULL;   // 给表头结点的指针域赋值

printf("请输入链表中结点的个数:");

scanf("%d", &nodeNum);

for(i=1; i<=nodeNum; i++)

{

printf("请输入第 %d 个结点的数据:", i);

scanf("%d", &x);

temp = (linklist )malloc(sizeof(linklist));  // 生成新的结点

temp->data = x;    // 对新结点的数据域赋值

// 将新结点插到头结点之后

temp->next = head->next; 

head->next = temp;

}

return head;  // 返回新建链表的头结点

}

#else

/

 函数名称:linklist CreateLinklistRear()

 函数功能:利用尾插法创建链表

 参    数:无

 返 回 值:创建完链表后的链表头结点

 说    明:无

/

extern linklist CreateLinklistRear()

{

int x, i, nodeNum;

linklist head, rear, temp;  // 定义头结点、尾结点和临时结点

head = (linklist )malloc(sizeof(linklist));  // 生成表头结点,表头结点不存放数据

head->next = NULL;  // 将表头结点的指针域赋值为NULL

rear = head;  // 将表头结点赋值给表尾结点

printf("请输入链表中结点的个数:");

scanf("%d", &nodeNum);

for(i=1; i<=nodeNum; i++)

{

printf("请输入第 %d 个结点的数据:", i);

scanf("%d", &x);

temp = (linklist )malloc(sizeof(linklist));  // 生成新的结点

temp->data = x;   // 新增结点的数据域

temp->next = NULL; // 新增结点的指针域(由于是尾插法,所以插入的结点都在尾部,即指针域为NULL)

rear->next = temp; // 使前一个结点指向新增结点(head->next=temp)

rear = temp;  // 将新增结点赋值给尾结点(尾插法,插入的结点在尾部)(rear=head->next)

}

//rear->next = NULL;  // 将尾结点的指针域赋值为空(为了方便检验链表是否为空链表)

return head;  // 返回头结点

}

#endif

前阵子做的用单向链表实现约瑟夫问题:

有M个人围一圈玩报数,凡报到N的出退出,输出每次退出的人的编号。

#include

"stdioh"

struct

game

{

int

ID;

game

pNext;

};

void

main()

{

int

i,m=17,n=3;

game

pPrev,pNode,pTop;

printf("Input

M

N:");

scanf("%d

%d",&m,&n);

if(n>m||n<1)

return;

pTop=new

game;

pTop->ID=1;

pPrev=pTop;

for(i=2;i<=m;i++)

{

pNode=new

game;

pNode->ID=i;

pPrev->pNext=pNode;

pPrev=pNode;

}

pNode->pNext=pTop;

pPrev=pNode;

pNode=pTop;

i=0;

while(pNode->pNext!=pNode)

{

i++;

if(i%n==0)

{

printf("%d

",pNode->ID);

pPrev->pNext=pNode->pNext;

delete

pNode;

pNode=pPrev->pNext;

i=0;

}

else

{

pPrev=pNode;

pNode=pNode->pNext;

}

}

delete

pNode;

}

以上就是关于有关链表。。。。C程序。。VC调试全部的内容,包括:有关链表。。。。C程序。。VC调试、求一份实现单链表的基本 *** 作的c语言程序,包括输入元素,谢谢。、C语言关于链表的程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/zz/9801007.html

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

发表评论

登录后才能评论

评论列表(0条)

保存