typedef struct node{
char data[10];//定义结点的数据域为字符串
struct node *next; //结点的指针域
}ListNode, *LinkList;
typedef struct nodetotal{
int count;//定义结点的数量
struct node *next; //首个结点的指针
}NodeTotal, *SList;
(1)按头插入法建立不带头结点的单链表。
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;
}
(2)按头插入法建立一个带头结点的单链表 。
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;
}
(3)按尾插入法建立不带头结点的单链表 。
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;
}
(4)按尾插入法建立一个带头结点的单链表 。
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;
}