- #include<stdio.h>
- #include<stdlib.h>
- typedef int ElemType;
- typedef struct Node{
- ElemType data;
- struct Node *next;
- }LinkNode,* LinkList;
- LinkNode *CreateFromTail(){
- LinkList head;
- LinkNode *s,*r;
- head=(LinkNode *)malloc(sizeof(LinkNode));
- char flag='Y';
- r=head;
- printf("开始用尾插法闯进单链表");
- while(flag=='Y'||flag=='y'){
- s=(LinkNode *)malloc(sizeof(LinkNode));
- printf("请输入新节点数据:");
- scanf("%d",&s->data);
- r->next=s;
- r=s;
- getchar();
- printf("继续输入吗?(Y/N):");
- scanf("%c",&flag);
- }
- r->next=NULL;
- return head;
- }
- void OutputNode(LinkList head)
- {
- LinkNode *p;
- int i;
- p=head->next;
- while(p!=NULL){
- printf("%4d",p->data);
- p=p->next;
- }
- }
- LinkList Init_linklist() //申请带一个头节点的空链表
- {
- LinkList L;
- L=(LinkList)malloc(sizeof(LinkNode));
- L->next=NULL;
- return L;
- }
- void InsLinkList(LinkNode *p,ElemType x)
- {
- LinkNode *s;
- s=(LinkNode *)malloc(sizeof(LinkNode));
- s->data=x;
- s->next=p->next;
- p->next=s;
- }
- int main() //尾插法创建链表
- {
- LinkList head;
- LinkNode *p;
- ElemType x;
- char flag;
- head=CreateFromTail();
- if(head==NULL)
- printf("创建链表失败!");
- else{
- printf("创建链表成功!");
- printf("创建的链表是:");
- OutputNode(head);
- printf("是否插入数(y/n)");
- scanf("%c",&flag);
- if(flag=='y')
- {
- printf("请输入插入节点与内容:");
- InsLinkList(p,x);
- printf("插入后链表为:");
- OutputNode(head);
- return 0;
- }
- else
- return 0;
- }
- }
复制代码 |