请定义链表节点结构linkNode,内含一个int类型的数据和链表指针。
设计形如linkNode *CreateNode(int value)的创建新节点函数、
形如void InsertFirst(linkNode *p)的将新节点插入链表头的函数、
形如void InsertLast(linkNode *p)的将新节点插入链表尾的函数、
形如void DispLink()的遍历链表函数、
形如void FreeLink()的释放链表函数。
在主函数中输入N个整数,依次调用InsertFirst()、InsertLast()函数将新创建的N个节点插入链表中,然后调用DispLink()遍历链表函数依次输出链表中的数据,最后调用FreeLink()函数释放链表所占内存。
#include#include // malloc 所在库 struct LinkNode { int t; struct LinkNode *next; }; struct LinkNode *CreatNode(int value); // 创建新节点 struct LinkNode *InsertFirst(struct LinkNode *p); // 新节点插入链表头 struct LinkNode *InsertLast(struct LinkNode *p); // 新节点插入链表尾 void DispLink(struct LinkNode *p); // 遍历链表函数 void FreeLink(struct LinkNode *p); // 释放链表函数 int main() { int N,i,k; struct LinkNode *head; scanf("%d%d",&N,&k); head=CreatNode(k); for (i=0;i t=value; p->next=NULL; return p; } struct LinkNode *InsertFirst(struct LinkNode *head) // 新节点插入链表头 { int m; struct LinkNode *p; scanf("%d",&m); p=CreatNode(m); p->next=head; head=p; return head; } struct LinkNode *InsertLast(struct LinkNode *head) // 新节点插入链表尾 { int m; struct LinkNode *p,*p1; p1=head; scanf("%d",&m); p=CreatNode(m); while(p1->next != NULL) p1=p1->next; p1->next=p; return head; } void DispLink(struct LinkNode *head) // 遍历链表函数 { struct LinkNode *p; p=head; while(p!=NULL) { printf("%d ",p->t); p=p->next; } } void FreeLink(struct LinkNode *head) // 释放链表函数 { struct LinkNode *p1,*p2; p1=head; while(p2!=NULL) { p2=p1->next; free(p1); p1=p2; } }



