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环境运行截图:

以上,如有帮助,请采纳,谢谢!