主程序中调用如下函数,实现单链表的建立,在单链表中插入结点,最后输出单链表。

已知的预定义常量和类型如下:#defineTRUE1#defineFALSE0#defineOK1#defineERROR0#defineOVERFLOW-2typede... 已知的预定义常量和类型如下:
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define OVERFLOW -2
typedef int Status;
typedef intElemType;
已知线性表的单链表存储结构为:
typedef structLNode
{
ElemType data;
Struct LNode *next;
} LNode,*Link List;
在主程序中调用如下函数,实现单链表的建立,在单链表中插入结点,最后输出单链表。
1.编写函数,void CreateLink(LinkList *L,int n))动态生成一个点链表。(L为单链表的头指针,它指向表中的第一个结点。)
2.编写函数,Status LinkInsert(LinkList L,int I,ElemTypee)实现在单链表L中第i个位置之前插入新的数据元素e,若插入成功返回OK。否则返回ERROR。
3.编写函数,void LinkPrint(LinkList *L)实现将单链表的元素依次输出到屏幕上。
4.编写函数,int Menu(),输出菜单项并请用户选择要进行的操作,菜单如下:
1: CreateLink
2: LinkInsert
3: LinkPrint
4: Exit
Enter choice (1-4):
展开
 我来答
hmy998
推荐于2016-10-22 · TA获得超过472个赞
知道小有建树答主
回答量:117
采纳率:0%
帮助的人:79.9万
展开全部
之前写过一个极其相似的。如下
#include <stdio.h>
#include <malloc.h>
typedef struct node
{
int id;
char val[200];
struct node *next ;
}MY_NODE;
#ifdef __stdc__
typedef int bool;
typedef 1 true;
typedef 0 false;
#endif //__stdc__

//MY_NODE 的定义见main.h
//内容是 1个名叫id的int类型以及一个名叫val的char[200]
bool inset(MY_NODE *&head,int id,const char *val) // 插入一个node,内容为id 和 str
{
MY_NODE *p;
if(head == NULL)
{
head = (MY_NODE *)malloc(sizeof(MY_NODE));
if(head == NULL) return false;
head->id = id;
snprintf(head->val,200,"%s",val);
head->next = NULL;
}else
{
p = head;
while(p->next != NULL) p = p->next;
p->next = (MY_NODE *)malloc(sizeof(MY_NODE));
if(p->next == NULL) return false;
p->next->id = id;
snprintf(p->next->val,200,"%s",val);
p->next->next = NULL;
}
return true;
}
bool del(MY_NODE *&head,int n) // 删除第n个,若不存在第n个,则返回false,否则返回true , n = 1,2,3....
{
int i;
MY_NODE *p,*t;
if(n < 1) return false;
if(head == NULL) return false;
if(n == 1)
{
p = head;
head = head -> next;
free(p);
}else
{
p = head ;
for(i=0;i<n-1;i++) // 找到第n个,若为空则返回false
{
t = p;
p = p->next ;
if(p == NULL) return false;
}
t->next = p->next;
free(p);
}
return true;
}
MY_NODE *get(MY_NODE *head,int n) // 查找第n个,n = 1,2,3,...
{
int i;
MY_NODE *p;
if(n < 1) return NULL;
if(head == NULL) return NULL;
p = head ;
for(i=0;i<n-1;i++) // 找到第n个,若为空则返回false
{
p = p->next ;
if(p == NULL) return NULL;
}
return p;
}
bool show_all(MY_NODE *head)
{
printf("all data are as follows:\n");
while(head != NULL)
{
printf("%d - %s \n",head->id,head->val);
head = head->next;
}
return true;
}
int main(int argc,char *argv[])
{
MY_NODE *head = NULL;
MY_NODE *p;
inset(head,1,"val 1");
inset(head,2,"val 2");
inset(head,3,"val 3");
show_all(head);
printf("the second data's value is [%s]\n",get(head,2)->val);
del(head,2);
show_all(head);
while(del(head,1));
return 0;
}

包括增删改查
我看了下,除了修改下变量名,没其他修改了
====================UPDATE=============================
显示选项什么不用我写吧

参考资料: http://argcandargv.com

本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式