视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
按下列要求建立单链表,编写程序的实现。要用C++编写。
2024-12-03 15:07:10 责编:小OO
文档

在C++中,我们可以通过定义结构体来创建单链表。首先定义节点的结构体,如下所示:

typedef struct node {

char data[10]; // 定义结点的数据域为字符串

struct node *next; // 结点的指针域

} ListNode, *LinkList;

接着定义结点总数的结构体:

typedef struct nodetotal {

int count; // 定义结点的数量

struct node *next; // 首个结点的指针

} NodeTotal, *SList;

接下来,我们可以使用头插入法来创建不带头结点的单链表。具体的函数实现如下:

SList CreatListR2(void) {

char ch[100];

ListNode *s,*r;

r = NULL;

SList head=(SList)malloc(sizeof(NodeTotal)); // 生成结点统计

head->count = 0;

head->next = NULL;

printf(" Input # to end !\n"); // 输入"#"代表输入结束

printf(" Please input Node_data: ");

scanf("%s",ch);

while(strcmp(ch,"#")!=0) {

s=(ListNode *)malloc(sizeof(ListNode));

strcpy(s->data,ch);

s->next=head->next;

head->next = s;

head->count++;

printf(" Please input Node_data: ");

scanf("%s",ch);

}

printf("\n 利用头插法建立单链表成功!\n")

return head;

}

使用同样的方法,我们可以创建一个带头结点的单链表。这里给出具体的实现代码:

LinkList CreatListR2(void) {

char ch[100];

ListNode *s,*r,*pp;

LinkList head=NULL;

printf(" Input # to end !\n"); // 输入"#"代表输入结束

printf(" Please input Node_data: ");

scanf("%s",ch);

while(strcmp(ch,"#")!=0) {

s=(ListNode *)malloc(sizeof(ListNode));

strcpy(s->data,ch);

s->next=head;

head=s;

printf(" Please input Node_data: ");

scanf("%s",ch);

}

printf("\n 利用头插法建立单链表成功!\n")

return head;

}

同样的,我们可以使用尾插入法来创建不带头结点的单链表。具体实现代码如下:

SList CreatListR1(void) {

char ch[100];

ListNode *s,*r;

r = NULL;

SList head=(SList)malloc(sizeof(NodeTotal)); // 生成结点统计

head->count = 0;

head->next = NULL;

r=NULL;

printf(" Input # to end !\n"); // 输入"#"代表输入结束

printf(" Please input Node_data: ");

scanf("%s",ch);

while(strcmp(ch,"#")!=0) {

s=(ListNode *)malloc(sizeof(ListNode));

strcpy(s->data,ch);

s->next=NULL;

if (head->next==NULL) head->next = s;

head->count++;

if (r!=NULL) r->next = s;

r=s;

printf(" Please input Node_data: ");

scanf("%s",ch);

}

printf("\n 利用尾插法建立单链表成功!\n")

return head;

}

最后,使用尾插入法来创建一个带头结点的单链表。具体的实现代码如下:

LinkList CreatListR1(void) {

char ch[100];

ListNode *s,*r,*pp;

LinkList head=NULL;

r=NULL;

printf(" Input # to end !\n"); // 输入"#"代表输入结束

printf(" Please input Node_data: ");

scanf("%s",ch);

while(strcmp(ch,"#")!=0) {

s=(ListNode *)malloc(sizeof(ListNode));

strcpy(s->data,ch);

s->next=NULL;

if (head==NULL) head=s;

if (r!=NULL) r->next=s;

r=s;

printf(" Please input Node_data: ");

scanf("%s",ch);

}

printf("\n 利用尾插法建立单链表成功!\n")

return head;

}

下载本文
显示全文
专题