c语言程序设计数据结构问题
/*
创建一个最大长度为20的线性订单表?,
序列表中节点的值为{1,4,6,7,10}。
然后在下标2处插入5个打印输出,
然后删除值为7的元素并打印输出。
*/
#包含?& ltstdio.h & gt
#包含?& ltmalloc.h & gt
#包含?& ltstdlib.h & gt
typedef?struct?结节
{
int?a;
struct?节点?*下一个;
}?节点;
//?创建一个长度为listSize的顺序链表,并初始化。
节点?*createlist(节点?*头,?int?列表大小?int?arr[]);
//?插入一个节点
int?insertnode(NODE?*头,?int?指数,?int?val);
//?删除节点
int?delnode(NODE?*头,?int?val);
//?打印链接列表信息
作废?printlist(节点?*头);
//?主要功能
int?main(int?argc,?夏尔?const?*argv[])
{
int?arr[5]?=?{1,?4,?6,?7,?10};
int?阿伦;
阿伦。=?(int)sizeof(arr)?/?(int)sizeof(int);
节点?*头?=?NULL
头?=?createlist(head,阿伦。arr);
如果?(NULL?==?头)
{
printf("失败?去哪?创造?列表?。?程序?Eixt?。?\ n ");
回归?0;
}
printf(" \ n ");
print list(head);
如果?(1?==?insertnode(头,2,?5))
{
printf(" \ n已插入?答?节点?之前?指数?2,\ n”);
print list(head);
}
其他
{
printf(" \ n失败?去哪?插入?答?节点?。\ n ");
}
如果?(1?==?delnode(头,7))
{
printf(" \ n已删除?答?节点?用什么?价值?的?7,\ n ");
print list(head);
}
其他
{
printf(" \ n没有?节点?删除了?:?价值?是吗?不是吗?存在。\ n ");
}
回归?0;
}
//?创建一个长度为listSize的顺序链表,并初始化。
节点?*createlist(节点?*头,?int?列表大小?int?arr[])
{
头?=?(节点?*)malloc(sizeof(NODE));
如果?(NULL?==?头)
{
printf("哎呀?!?马洛克?失败?!?程序?退出?!\ n ");
回归?NULL
}
节点?*p,?* q;
p?=?头;
为了什么?(int?我?=?0;?我?& lt?listSize?i++)
{
q?=?(节点?*)malloc(sizeof(NODE));
如果?(NULL?==?问)
{
printf("哎呀?!?马洛克?失败?!?程序?退出?!\ n ");
回归?NULL
}
q->;下一个?=?NULL
如果?(我?& lt?5)
{
q->;答?=?arr[I];
}
p->;下一个?=?q;
p?=?q;
q?=?q->;接下来;
}
回归?头;
}
//?插入一个节点
int?insertnode(NODE?*头,?int?指数,?int?val)
{
节点?*p?=?头;
节点?*q?=?NULL
int?我,?数数?=?0;
什么时候?(NULL?!=?p->;下一个)
{
count++;
p?=?p->;接下来;
}
如果?(索引?& gt?数数?||?指数?& lt?0)
{
printf("长度?的?列表?是吗?%d?,?拜托了。进入?合适吗?指数?去哪?补充?节点。?[0,%d]\n ",?数数,?计数);
printf("没什么?有吗?去过吗?补充道。\ n ");
回归?0;
}
p?=?head->;接下来;
q?=?头;
为了什么?(我?=?0;?我?& lt=?指数;?i++)
{
如果?(索引?==?我?)
{
节点?*n?=?(节点?*)malloc(sizeof(NODE));
如果?(NULL?==?n)
{
printf("哎呀?!?马洛克?失败?!?程序?退出?!\ n ");
回归?0;
}
n->;答?=?val
n->;下一个?=?p;
q->;下一个?=?n;
回归?1;
}
p?=?p->;接下来;
q?=?q->;接下来;
}
回归?0;
}
//?删除节点
int?delnode(NODE?*头,?int?val)
{
节点?*p,?* q;
p?=?head->;接下来;
q?=?头;
什么时候?(p?!=?空)
{
如果?(瓦尔?==?p->;答
{
p?=?p->;接下来;
q->;下一个?=?p;
回归?1;
}
其他
{
p?=?p->;接下来;
q?=?q->;接下来;
}
}
回归?0;
}
//?打印链接列表信息
作废?printlist(节点?*头)
{
节点?* p;
p?=?head->;接下来;
int?我?=?0;
如果?(NULL?!=?p)
{
printf("Print?列表?信息?作为?下面:\ n”);
什么时候?(NULL?!=?p)
{
printf("Node?在哪里?指数?%d?,?价值?是吗?%d?。\n“,?我,?p->;a);
i++;
p?=?p->;接下来;
}
}
其他
{
printf("List?是吗?空的。\ n ");
}
}Linux环境运行截图:
以上,如有帮助,请采纳,谢谢!