编程写出一个不带头结点的单链表的常规操作,创建、中间插入、删除、逆序、遍历。
struct stu
{
intnum;
structstu *next;
};
typedefstruct node Node; typedefNode * Link; //创建 voidinit_node(Link *head) { *head = NULL; } //中间插入 voidinsert_midnode(Link newname,Link head,int num) { if(head== NULL) { return -1; } Linktemp = head; while(temp!= NULL) { if(tempp->num == num) { newnode>next = temp->next; temp->next = newnode; return 0; } temp = temp->next; } } //遍历 voiddisplay_link(Link head) { Linktemp = head; while(temp!= ‘\0’) { printf(“%d\t”,temp->num); temp = temp->next; } printf(“\n”); } //删除 intdel_midnode(Linnk *head,int num) { if(*head== NULL) { return -1; } Linktemp = *head; if((*head)->num== num) { *head = (*head)->next; free(temp); return 0; } Linkptr = temp; temp= temp->next; while(temp!= ‘\0’) { if(temp->num == num) { ptr->next = temp->next; free(temp); temp = NULL; return 0; } ptr = temp; temp = temp->next; } } //逆序 intreverse_link(Link *head) { if(*head== NULL || (*head)->next == NULL) { return -1; } Linkstr = *head; Linkptr = str->next; Linktemp = ptr->next; while(temp!= NULL) { ptr->next = str; str = temp; temp = temp->next; } ptr->next= str; (*head)->next= NULL; *head= ptr; }